MySQL 查询所有子节点SQL

查看了很多博客,基本上都不是我想要的,那些函数不能加条件,要么就是GROUP_CONCAT 数据过长,最后修改如下 

SELECT id FROM ( SELECT t1.id, IF(FIND_IN_SET(parentid, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS ischild FROM 
( SELECT id,parentid FROM AREA t WHERE t.level <=3 ORDER BY parentid, id ) t1, (SELECT @pids := 820000) t2 ) t3 WHERE ischild != 0 

82000是父节点,查询它下面的所有子节点,t.level <= 3 是子节点的条件,也可以这样用

SELECT GROUP_CONCAT(id) FROM ( SELECT t1.id, IF(FIND_IN_SET(parentid, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS ischild FROM 
( SELECT id,parentid FROM AREA t WHERE t.level <=3 ORDER BY parentid, id ) t1, (SELECT @pids := 820000) t2 ) t3 WHERE ischild != 0 

 

你可能感兴趣的:(MySQL)