HRRM という従業員レコード用の SQL テーブルがあります。このテーブルには、employeeID、FirstName、LastName などのフィールドがあります。
SQL には、HREC と呼ばれる別のテーブルがあります。このテーブルは HRRM に結合され、緊急連絡先の詳細が含まれています。
基本的に、HRRM の各従業員は、HREC で多くの緊急連絡先を持つことができます。
HREC にレコードがないすべての従業員を HRRM から選択するにはどうすればよいですか?
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
NOT EXISTS を使用:
SELECT * FROM HRRM R
WHERE NOT EXISTS (SELECT * FROM HREC E WHERE R.EMP_ID=E.EMP_ID)
同時に DISTINCT を使用する場合を除き、join を使用しないでください。