我有一个名为的MySQL表EmpList
。我想使用循环带来预期的结果。例如,EmpList有两列,
EmpNo ReportingTo ------------------- 27 14 68 14 104 27 105 27 138 27 139 68 150 8 151 8 8 5
我EmpNo
作为查询的输入(例如:14)。我期待所有的人ReportingTo
EmpNo14
(例如:表中的27,68)以及子报表(如果有的话)(EmpNo
分别是ReportingTo
27和68(例如:104,105,138 ReportingTo
27和139 ReportingTo
68))。最后,我试图在单列中获得结果
EmpNo ------ 27 68 104 105 138 139
我正在尝试使用这样的查询获取结果
选择EmpNo 来自EmpList 汇报至IN( 选择不同的EmpNo 来自EmpList WHERE ReportingTo = 14 );
该查询仅给出一个级别(较低级别)的结果。输入值我正在基于登录动态获取。
如果您仅需要2个级别-您的解决方案是联合,但对于更多级别-没有一个简单的方法可以在单个查询中完成。您始终可以尝试使用存储过程来检索此数据。
仅用于2级信息使用
SELECT EmpNo
FROM EmpList
WHERE ReportingTo=14
UNION ALL
SELECT EmpNo
FROM EmpList
WHERE ReportingTo IN
(SELECT DISTINCT EmpNo
FROM EmpList
WHERE ReportingTo = 14
);
并且在Mysql中最好使用join而不是子查询,因此查询应为
SELECT EmpNo
FROM EmpList
WHERE ReportingTo =14
UNION ALL
SELECT l1.EmpNo
FROM EmpList l1 join EmpList l2 on l1.ReportingTo=l2.EmpNo
WHERE l2.ReportingTo =14;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句