我最近在练习使用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 名员工的结果 (),但是上面的查询给出了 22 名员工的结果 ()]。我还注意到有些有家属,这不符合我的要求。 有人可以帮我解决上述问题吗,谢谢!
您可以使用
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;