今天水一个SQL查询,如何根据根据父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,在文章分类查询用处较大。