—— 阿尔伯特·爱因斯坦

程序员の奇妙冒险

常用SQL笔记MySQL
2025-05-07 15:17阅读:46评论:0

MySQL之非存储过程查询所有父级节点

例如 祖级节点为:企业/TI技术部/后端 假设后端节点的id 为1416957672636129281 需求:需要查询出后端所有的父级级节点,即企业/TI技术部 此SQL会查询出包括本身数据,即1416957672636129281的数据 最终查询结果为:企业、TI技术部、后端

  • 例如 祖级节点为:___PROTECTED_9__0___PROTECTED_10__5___PROTECTED_11__1___PROTECTED_12__6___PROTECTED_13__2___PROTECTED_14__7___PROTECTED_15__3___PROTECTED_16__8___PROTECTED_17__4__
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
t2.*
FROM
(
SELECT
@r AS _id,
( SELECT @r := parent_id FROM sys_dept WHERE id = _id ) AS parent_id,
@s := @s + 1 AS sort
FROM
( SELECT @r := 1416957672636129281, @s := 0 ) temp,
sys_dept
WHERE
@r > 0
) t1
JOIN sys_dept t2 ON t1._id = t2.id
ORDER BY
t1.sort DESC
 
  • 此SQL会查询出包括本身数据,即___PROTECTED_3__0___PROTECTED_4__2___PROTECTED_5__1__
评论(0)
暂无评论来抢沙发吧~