Mysql
 sql >> Database >  >> RDS >> Mysql

Trova i record di una tabella che non esistono in un'altra

Esistono diversi modi per farlo, con un'efficienza variabile, a seconda dell'efficacia del tuo strumento di ottimizzazione delle query e della dimensione relativa delle due tabelle:

Questa è l'affermazione più breve e potrebbe essere la più rapida se la tua rubrica è molto breve:

SELECT  *
FROM    Call
WHERE   phone_number NOT IN (SELECT phone_number FROM Phone_book)

in alternativa (grazie a Alterlife )

SELECT *
FROM   Call
WHERE  NOT EXISTS
  (SELECT *
   FROM   Phone_book
   WHERE  Phone_book.phone_number = Call.phone_number)

o (grazie 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 che, come altri hanno già detto, normalmente è meglio selezionare solo le colonne desiderate, non '* ')