gpt4 book ai didi

mysql - 如何在 SQL 中进行递归查询?

转载 作者:行者123 更新时间:2023-12-04 08:04:57 27 4
gpt4 key购买 nike

我有拖车像
用户

id | name
_______________
1 | one
2 | two
3 | three
4 | four
5 | five
6 | six
雇员
id | userId | reportedTo
_________________________
1 | 1 | null
2 | 2 | 1
3 | 3 | 2
4 | 4 | 3
5 | 5 | 4
6 | 6 | 5
我需要类似的东西
如果我为某个用户运行查询,那么它将返回所有报告给这个用户的记录和其他用户报告给这个用户的记录
喜欢:
如果我为用户 1 运行此查询,则它将返回所有记录接受来自员工的 userId 1
id | userId | reportedTo
_________________________
2 | 2 | 1
3 | 3 | 2
4 | 4 | 3
5 | 5 | 4
6 | 6 | 5
如果我对 userId 4 运行查询,那么它将从员工表中返回 userId 5 和 6 的记录
id | userId | reportedTo
_________________________
5 | 5 | 4
6 | 6 | 5
谁能帮我这个。
提前致谢

最佳答案

您可以使用递归 CTE:

with recursive cte(i, u, r) as (
select * from employees where reportedTo = 1
union all
select e.* from cte c join employees e on c.u = e.reportedTo
)
select c.i id, c.u userId, c.r reportedTo from cte c;
输出:


ID
用户身份
报告给


2
2
1

3
3
2

4
4
3

5
5
4

6
6
5


demo

关于mysql - 如何在 SQL 中进行递归查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66262009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com