写一段mysql支持的sql,能够通过父id 获取所有子id 不用with语句
假设有一个名为category的表,表结构如下:
CREATE TABLE category (
id INT PRIMARY KEY,
name VARCHAR(50),
parent_id INT
);
其中,parent_id表示父类别的id。
以下是通过父id获取所有子id的sql语句:
SELECT id FROM category WHERE parent_id = {父id}
UNION ALL
SELECT c.id FROM category c
INNER JOIN (
SELECT id FROM category WHERE parent_id = {父id}
) sub ON c.parent_id = sub.id;
解释一下sql语句的执行流程:
- 第一条SELECT语句查询出所有直接属于该父id下的子id。
- 第二条SELECT语句查询出所有属于该父id下的子孙id。其中,使用了子查询语句,查询出所有直接属于该父id下的子id,然后再与category表进行关联查询,查询出所有属于该父id下的子孙id。
- 使用UNION ALL将两条查询结果合并。
通过这段sql语句,就可以获取到所有的子id了。
原文地址: https://www.cveoy.top/t/topic/wOX 著作权归作者所有。请勿转载和采集!