[英]SQL Joining two different queries that use only one table
基本上,我有一个包含员工信息的表:
frs_Employee
我的最终结果应该是一个查询,该查询返回经理的姓名(没有“ mngnin”的人,即前12名员工)以及他们所管理的员工的姓名。
我想出了如何返回员工的串联列表:
SELECT (SELECT GROUP_CONCAT(empname) AS employees)
FROM frs_Employee
WHERE `mgrnin` <> ''
GROUP BY `mgrnin`
问题在于,其中一位经理(NIN001)不管理员工。 因此,当我使用GROUP BY时,我的行数比应该的少。
我要么需要让GROUP BY以某种方式也获得空字段-我尝试使用如下别名:
(SELECT `empnin` FROM frs_Employee WHERE `mgrnin` = '') AS `myAlias`
但这是一个令人头疼的问题。
我也尝试过使用JOIN(这是我怀疑这已解决的方式),但我无法解决。 我还考虑过使用临时表,但是我不确定是否要实现此目的。
有一个好的通用解决方案的想法吗?
您可以通过left join
来处理:
SELECT m.empnin, GROUP_CONCAT(e.empname) AS employees
FROM frs_Employee m LEFT JOIN
frs_Employee e
ON e.mgrnin = m.empnin
WHERE m.mgrnin IS NULL
GROUP BY m.empin;
还要注意, GROUP_CONCAT()
不需要子查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.