mysql - 表中的自连接和递归选择

标签 mysql sql database oracle join

假设如下表

| ID |  NAME | ROLE | MGRID |
---------------------------
|  1 |   ONE |    5 |   5 |
|  2 |   TWO |    5 |   5 |
|  3 | THREE |    5 |   6 |
|  4 |  FOUR |    5 |   6 |
|  5 |  FIVE |   15 |   7 |
|  6 |   SIX |   25 |   8 |
|  7 | SEVEN |   25 |   7 |
|  8 | EIGHT |    5 |   8 |

我如何获得向某员工报告的所有员工的列表,包括处于以下后续报告级别的员工?

我的意思是,给定 emp id 5,我应该得到 [1, 2],给定 7,我应该得到 [1, 2, 5, 7]。我如何完成这项工作?

self 加入在这里会有帮助吗?现在需要复习我对连接的了解。

最佳答案

SELECT id
      FROM emp
START WITH id = 7
CONNECT BY NOCYCLE mgrid = PRIOR id

SQLFIDDLE LINK

关于mysql - 表中的自连接和递归选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084235/

相关文章:

mysql - SQL:泛化查询

mysql - 防止在 IF 语句中调用函数两次

java - java中无法从另一个类访问一个类

php - codeigniter 分页中的索引限制

c# - 如何将 MY SQL 查询的输出转换为 Access 数据库

c# - 当有复合主键并且只想使用一个时使用 db.Find

sql - 使用 activerecord/pgsql 计算分组平均值

mysql - 选择行,除非值被另一行取消

MySQL 查询优化 - 内部查询

database - 如何在 Redis 中对哈希值进行排序?