MySql递归查询上级,下级
tableName 表名
id 表id
parent_id 父id
SELECT T2.id, T2.name
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM tableName WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := 5, @l := 0) vars,
tableName h
WHERE @r <> 0) T1
JOIN tableName T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC;
SELECT T2.id, T2.name
FROM
(
SELECT
@ids AS _ids,
(SELECT @ids := GROUP_CONCAT(id) FROM tableName WHERE FIND_IN_SET(parent_id,@ids)) AS cids
FROM
tableName ,
( SELECT @ids := 1, @l := 0 ) b
WHERE
@ids IS NOT NULL
) T1 ,
tableName T2
WHERE
FIND_IN_SET(T2.id,T1 ._ids )