我有一个 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/