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

达瓦尔

我有像这样的桌子

使用者

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

谁能帮我这个。

提前致谢

阿贾克斯1234

您可以使用递归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

观看演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

如何在SQL查询中进行计算

来自分类Dev

如何在SQL Server查询中进行分组

来自分类Dev

如何在查询中进行多级投影?

来自分类Dev

如何在DBFlow中进行复杂的查询?

来自分类Dev

如何在重写的URL中进行查询

来自分类Dev

如何在SQLAlchemy中进行子查询

来自分类Dev

如何在Realm中进行嵌套查询?

来自分类Dev

如何在Django中进行条件查询?

来自分类Dev

如何在MongoDB中进行搜索查询

来自分类Dev

如何在Laravel中进行条件查询

来自分类Dev

如何在Xpath查询中进行OR条件

来自分类Dev

如何在MongoDB中进行此类查询

来自分类Dev

如何在“单个查询”中进行选择?

来自分类Dev

如何在重写的URL中进行查询

来自分类Dev

如何在Excel中进行多级查询?

来自分类Dev

如何在Django中进行以下查询?

来自分类Dev

如何在MySQL中进行特定查询

来自分类Dev

如何在 MySQL 中进行 Intersect 查询?

来自分类Dev

如何在elasticsearch中进行连接查询?

来自分类Dev

如何在python中进行多线程SQL查询,以便获得所有查询的结果

来自分类Dev

如何使用Spark Sql进行递归查询

来自分类Dev

如何在Behaviors.receive中进行递归调用?

来自分类Dev

如何在F#中进行递归调用

来自分类Dev

如何在 xslt 中进行递归模板匹配

来自分类Dev

如何在SQL中进行条件乘法

来自分类Dev

如何在SQL Server中进行汇总?

来自分类Dev

如何在SQL Server 2008中的单个查询中进行两个分组

来自分类Dev

如何在Django的SQL查询中进行一般数学运算?