Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Finden Sie Datensätze aus einer Tabelle, die in einer anderen nicht vorhanden sind

Dafür gibt es verschiedene Möglichkeiten mit unterschiedlicher Effizienz, je nachdem, wie gut Ihr Abfrageoptimierer ist und wie groß Ihre beiden Tabellen sind:

Dies ist die kürzeste Anweisung und möglicherweise die schnellste, wenn Ihr Telefonbuch sehr kurz ist:

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

alternativ (Dank an Alterlife ). )

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

oder (dank WOPR)

SELECT * 
FROM   Call
LEFT OUTER JOIN Phone_Book
  ON (Call.phone_number = Phone_book.phone_number)
  WHERE Phone_book.phone_number IS NULL

(Abgesehen davon, wie andere gesagt haben, ist es normalerweise am besten, nur die gewünschten Spalten auszuwählen, nicht '* ')