Hay varias formas diferentes de hacer esto, con eficiencia variable, dependiendo de qué tan bueno sea su optimizador de consultas y el tamaño relativo de sus dos tablas:
Esta es la declaración más corta y puede ser más rápida si su directorio telefónico es muy corto:
SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)
alternativamente (gracias a Alterlife )
SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)
o (gracias a WOPR)
SELECT *
FROM Call
LEFT OUTER JOIN Phone_Book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL
(ignorando que, como han dicho otros, normalmente es mejor seleccionar solo las columnas que desea, no '*
')