これを行うにはいくつかの異なる方法がありますが、クエリオプティマイザーの性能と、2つのテーブルの相対的なサイズに応じて、効率が異なります。
これは最短のステートメントであり、電話帳が非常に短い場合は最も速くなる可能性があります:
SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)
または(Alterlife に感謝します )
SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)
または(WOPRのおかげで)
SELECT *
FROM Call
LEFT OUTER JOIN Phone_Book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL
(他の人が言っているように、それを無視すると、通常は'*
ではなく、必要な列だけを選択するのが最善です。 ')