繁体   English   中英

SQL连接仅使用一个表的两个不同查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM