我有一个名为 HRRM 的员工记录 SQL 表。此表具有诸如employeeID、FirstName、LastName 等字段。
SQL 中有另一个表称为 HREC。此表已加入 HRRM,并包含紧急联系人详细信息。
基本上,HRRM 中的每个员工都可以在 HREC 中拥有许多紧急联系人。
如何从 HRRM 中选择在 HREC 中没有任何记录的所有员工?
如何从中选择
HRRM
没有任何记录的所有员工HREC
?
这条英文语句几乎逐字翻译为 SQL:
SELECT *
FROM HRRM e
WHERE NOT EXISTS (SELECT * FROM HREC r WHERE r.emp_id=e.emp_id)
一种不那么简单的方法是使用外部JOIN
:
SELECT e.*
FROM HRRM e
LEFT OUTER JOIN HREC r ON r.emp_id=e.emp_id
WHERE r.emp_id IS NULL
使用不存在:
SELECT * FROM HRRM R
WHERE NOT EXISTS (SELECT * FROM HREC E WHERE R.EMP_ID=E.EMP_ID)
不应该使用 join 除非你同时使用 DISTINCT