sql >> Database >  >> RDS >> Mysql

Vind records uit de ene tabel die niet bestaan ​​in een andere

Er zijn verschillende manieren om dit te doen, met variërende efficiëntie, afhankelijk van hoe goed uw query-optimizer is en de relatieve grootte van uw twee tabellen:

Dit is de kortste verklaring en kan het snelst zijn als uw telefoonboek erg kort is:

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

alternatief (dankzij Alterlife )

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

of (dankzij WOPR)

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

(je negeert dat, zoals anderen al hebben gezegd, het normaal gesproken het beste is om alleen de kolommen te selecteren die je wilt, niet '* ')



  1. Hoe kan ik het MySQL-enginetype voor een specifieke tabel controleren?

  2. SYSDATETIME() vs GETDATE() in SQL Server:wat is het verschil?

  3. Alleen maand en jaar krijgen van SQL DATE

  4. Hoe u het valutasymbool van uw sessie in Oracle kunt wijzigen