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

Find poster fra en tabel, som ikke findes i en anden

Der er flere forskellige måder at gøre dette på, med varierende effektivitet, afhængigt af hvor god din forespørgselsoptimering er, og den relative størrelse af dine to tabeller:

Dette er den korteste erklæring og kan være hurtigst, hvis din telefonbog er meget kort:

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

alternativt (tak til Alterlife )

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

eller (takket være WOPR)

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

(Ignorerer, som andre har sagt, er det normalt bedst at vælge kun de kolonner, du ønsker, ikke '* ')



  1. Udskiftning af SQL-markører med alternativer for at undgå præstationsproblemer

  2. Lower()-funktionen på internationale tegn i postgresql

  3. MySQL - OPDATERING flere rækker med forskellige værdier i én forespørgsel

  4. Sådan genereres et tilfældigt tal inden for et specificeret område i SQLite