MYSQL递归查询所有父节点

1、表结构:

CREATE TABLE `t_busi_system` (
`ID` varchar(64) NOT NULL COMMENT '标识',
`PARENT_ID` varchar(64) DEFAULT NULL COMMENT '父id',
`CREATE_DATE` varchar(64) DEFAULT NULL COMMENT '创建时间',
`CREATE_USER_ID` varchar(64) DEFAULT NULL COMMENT '创建人id',
`CREATE_USER_NAME` varchar(64) DEFAULT NULL COMMENT '创建人姓名',
`LAST_UPDATE_DATE` varchar(64) DEFAULT NULL COMMENT '最后更新时间',
`LAST_UPDATE_USER_ID` varchar(64) DEFAULT NULL COMMENT '最后更新人id',
`LAST_UPDATE_USER_NAME` varchar(64) DEFAULT NULL COMMENT '最后更新人姓名',
`SYSTEM_NAME` varchar(255) DEFAULT NULL COMMENT '系统名称'
PRIMARY KEY (`ID`)
)

2、SQL:

SELECT T2.id, T2.SYSTEM_NAME
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM T_BUSI_SYSTEM WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := '065efb0ee42e4c77a401bcf0f3eccf20', @l := 0) vars,
T_BUSI_SYSTEM h
WHERE @r <> 0) T1
JOIN T_BUSI_SYSTEM T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC

本文由 我爱PHP169 作者:admin 发表,其版权均为 我爱PHP169 所有,文章内容系作者个人观点,不代表 我爱PHP169 对观点赞同或支持。如需转载,请注明文章来源。

发表回复