MySQL如何根据父id递归查询所有子孙id
如何根据根据父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,在文章分类查询用处较大。
评论已关闭