假设有一个名为 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 语句的执行流程:

  1. 第一条 SELECT 语句查询出所有直接属于该父 id 下的子 id。
  2. 第二条 SELECT 语句查询出所有属于该父 id 下的子孙 id。其中,使用了子查询语句,查询出所有直接属于该父 id 下的子 id,然后再与 category 表进行关联查询,查询出所有属于该父 id 下的子孙 id。
  3. 使用 UNION ALL 将两条查询结果合并。

通过这段 SQL 语句,就可以获取到所有的子 id 了。

MySQL 获取所有子 ID (不使用 WITH 语句)

原文地址: https://www.cveoy.top/t/topic/lJXo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录