我有一个 employee 表,其中包含以下数据。
对于特定的经理,我想按照经理的层次结构获取所有员工的列表。

id  name    manager

1   John    6
2   Gill    7
3   Ben     2
4   Roy     8
5   Lenin   6
6   Nancy   7
7   Sam     0
8   Dolly   3

例如,我必须让经理 下的员工 Sam (7)。如您所见, Sam 没有任何经理,但他是员工 Gill Nancy 的经理,他们分别是员工 Ben John, Lenin 的经理。

所以我运行了这样的查询:
select * from employee where manager=7;

我得到的结果为 2 行, Gill Nancy

但是现在,我还想在输出中显示员工 Ben John Lenin ,因为他们都在经理 Gill 的管理下。

我如何构建查询以分层显示经理的员工?换句话说,我怎样才能在经理 下显示所有 Gill Nancy Ben John 列宁

最佳答案

向您的 WHERE 子句添加 IN 子查询将处理该问题。例如:

SELECT * FROM employee WHERE manager = 7 OR manager IN (SELECT id FROM employee WHERE manager = 7)

关于mysql - 如何在mysql中获取经理的员工层次结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11051506/

10-11 09:06