sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan vælger man alle poster fra en tabel, der ikke findes i en anden tabel?

SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL

Q :Hvad sker der her?

A :Konceptuelt vælger vi alle rækker fra table1 og for hver række forsøger vi at finde en række i table2 med samme værdi for name kolonne. Hvis der ikke er en sådan række, forlader vi bare table2 del af vores resultat tom for den række. Derefter begrænser vi vores valg ved kun at vælge de rækker i resultatet, hvor den matchende række ikke findes. Til sidst ignorerer vi alle felter fra vores resultat undtagen name kolonne (den vi er sikre på, findes, fra table1 ).

Selvom det måske ikke er den mest effektive metode i alle tilfælde, burde den fungere i stort set alle databasemotorer nogensinde, der forsøger at implementere ANSI 92 SQL



  1. Behøver at droppe en database ikke ske i nogen transaktion?

  2. Mysql vælg distinkt

  3. Hvordan omdøber man noget i SQL Server, der har firkantede parenteser i navnet?

  4. PDO henter en kolonne fra tabel til 1-dimensionel array