【发布时间】:2021-12-29 04:43:45
【问题描述】:
我有一个user 表,
USER_ID IMMEDIATE_SUPERIOR_ID
432 NULL
554 432
1150 432
1442 1150
为了获取分层数据,我编写了这个查询
SELECT c1.user_id as level_1, c2.user_id as level_2,
c3.user_id as level_3, c4.user_id as level_4 ,
c4.user_id as level_5 , c4.user_id as level_6
FROM `user` as c1
LEFT JOIN `user` as c2 ON c1.user_id =c2.IMMEDIATE_SUPERIOR_ID
LEFT JOIN `user` as c3 ON c2.user_id =c3.IMMEDIATE_SUPERIOR_ID
LEFT JOIN `user` as c4 ON c3.user_id =c4.IMMEDIATE_SUPERIOR_ID
LEFT JOIN `user` as c5 ON c4.user_id =c5.IMMEDIATE_SUPERIOR_ID
LEFT JOIN `user` as c6 ON c5.user_id =c6.IMMEDIATE_SUPERIOR_ID
where c1.USER_ID =432
结果:
level_1|level_2|level_3|level_4|level_5|level_6|
-------+-------+-------+-------+-------+-------+
432| 554| | | | |
432| 1150| 1442| | | |
既然用户 432 是所有这三个用户的最高管理者,我该如何显示如下输出?
USER_ID IMMEDIATE_SUPERIOR_ID
554 432
1150 432
1442 432
【问题讨论】:
-
什么是精确 MySQL版本?
-
@Akina 我检查的版本是 8.0.22
-
并且创建函数没问题?
-
@AliFidanli 查询更好,因为我们可以使用它的代码来获取数据
标签: mysql