1.通過子查詢父集
SELECT T2.*
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_code FROM city_info WHERE city_code = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := 110101, @l := 0) vars,
city_info h
WHERE @r <> 0) T1
JOIN city_info T2
ON T1._id = T2.city_code
ORDER BY T1.lvl DESC
2.通過父查詢子集
SELECT
T2.*
FROM (
SELECT
@ids as _ids,
( SELECT @ids := GROUP_CONCAT(city_code)
FROM city_info
WHERE FIND_IN_SET(parent_code, @ids)
) as cids,
@l := @l+1 as lvl
FROM city_info,
(SELECT @ids :=110100, @l := 0 ) b
WHERE @ids IS NOT NULL
) city_code, city_info T2
WHERE FIND_IN_SET(T2.city_code, _ids)
ORDER BY lvl, city_code