假设我们有一个名为'category'的表,其中有两列分别为'id'和'parent_id',表示每个分类的唯一标识符和其父分类的标识符。

我们可以使用递归查询的方式来获取所有子id,具体的SQL语句如下:

WITH RECURSIVE subcategories AS (
  SELECT id
  FROM category
  WHERE id = ?
  
  UNION ALL
  
  SELECT c.id
  FROM category c
  JOIN subcategories s ON c.parent_id = s.id
)
SELECT * FROM subcategories;

其中,'?'表示要获取子id的父id。

这个SQL语句使用了CTE(公共表表达式)和递归查询来实现。首先,我们选择指定的父id作为查询的起点。然后,我们使用UNION ALL将每个子分类的id连接起来,直到没有更多的子分类为止。最后,我们从递归查询的结果集中选择所有的子id。

这个SQL语句可以很方便地获取指定分类的所有子分类,而且可以适用于任意深度的分类结构。

MySQL递归查询获取所有子分类ID

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

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