使用 EXCEPT(减号)查找没有家属的员工

问题描述 投票:0回答:1

我最近在练习使用MySQL,当我研究MySQL中的EXCEPT (MINUS)函数时,我遇到了一些问题: 我尝试使用以下查询查找没有家属的员工的信息:

SELECT e.employee_id, CONCAT(e.first_name, ' ', e.last_name) Employee
FROM employees e
WHERE e.employee_id IN (
    SELECT  e.employee_id  
    FROM employees e
    EXCEPT  
    SELECT  d.employee_id
    FROM dependents d
    ORDER BY employee_id);

查询运行成功,但我注意到它与我的预期不同。当我单独运行子查询时,我只得到了 12 名员工的结果 (https://i.stack.imgur.com/KeP9d.png),但是上面的查询给出了 22 名员工的结果 (https://i.stack.imgur.com/3Yk6Q.png)]。我还注意到有些有家属,这不符合我的要求。 有人可以帮我解决上述问题吗,谢谢!

sql mysql except
1个回答
0
投票

您可以使用

LEFT JOIN
NULL
检查来实现您正在寻找的内容 :

SELECT e.employee_id, CONCAT(e.first_name, ' ', e.last_name) AS Employee
FROM employees e
LEFT JOIN dependents d ON e.employee_id = d.employee_id
WHERE d.employee_id IS NULL
ORDER BY e.employee_id;
© www.soinside.com 2019 - 2024. All rights reserved.