MySQL如何根据父id递归查询所有子孙id

warning: 这篇文章距离上次修改已过787天,其中的内容可能已经有所变动。

如何根据根据父id递归查询所有子孙id,废话就不多说,直接上干货。

SELECT id    
FROM (    
SELECT t1.id, IF ( FIND_IN_SET(pid, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS ischild    
FROM (SELECT id, pid    
           FROM category t    
           ORDER BY pid, id    
           ) t1,    
           (SELECT @pids := '1') t2    
) t3    
WHERE ischild != 0 OR id = '1'

其中id为查询id,pid为父id,category为表名,'1'为要查询的id值。最后可以加上OR id = '1' 表示查询结果包括自己,也可以不加。

这样就一次性查完id为1的所在子、孙id,在文章分类查询用处较大。

最后修改于:2022年05月11日 21:51

添加新评论