常用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__