父子id mysql,MYSQL 递归父子

cd69f8c7d0b9

捕获.PNG

子查父 (根据子节点查询所有父节点)

SELECT

T2.*

FROM

(

SELECT

@r AS _id,

(

SELECT

@r := parent_id

FROM

t_sys_organization

WHERE

id = _id

) AS parent_id,

@l := @l + 1 AS lvl

FROM

(SELECT @r := '4', @l := 0) vars,

t_sys_organization h

WHERE

@r <> 0

) T1

JOIN t_sys_organization T2 ON T1._id = T2.id

ORDER BY

T1.lvl DESC

父查子 (根据节点查询所有字点)

SELECT

ID.level,

DATA.*

FROM

(SELECT

@ids AS _ids,

(SELECT

@ids := GROUP_CONCAT(id)

FROM

t_sys_organization

WHERE FIND_IN_SET(parent_id, @ids)) AS cids,

@l := @l + 1 AS LEVEL

FROM

t_sys_organization,

(SELECT

@ids := '1',

@l := 0) b

WHERE @ids IS NOT NULL) id,

t_sys_organization DATA

WHERE FIND_IN_SET(DATA.id, ID._ids)

ORDER BY LEVEL,

id ;

查询结果

cd69f8c7d0b9

捕获.PNG

父查子(方法二)

SELECT

O2.*

FROM

(SELECT

@r AS _id,

(SELECT

@r := id

FROM

t_sys_organization

WHERE parent_id = _id) AS id,

@l := @l + 1 AS lvl

FROM

(SELECT

@r := '1',

@l := 0) vars,

t_sys_organization h) O1

JOIN t_sys_organization O2

ON O1._id = O2.parent_id

WHERE O2.enabled = 1

ORDER BY O1.lvl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值