sql >> Databasteknik >  >> RDS >> Sqlserver

Hur väljer man alla poster från en tabell som inte finns i en annan tabell?

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

F :Vad händer här?

A :Begreppsmässigt väljer vi alla rader från table1 och för varje rad försöker vi hitta en rad i table2 med samma värde för name kolumn. Om det inte finns någon sådan rad lämnar vi bara table2 del av vårt resultat tom för den raden. Sedan begränsar vi vårt urval genom att bara välja de rader i resultatet där den matchande raden inte finns. Slutligen ignorerar vi alla fält från vårt resultat förutom name kolumn (den vi är säkra på att existerar, från table1 ).

Även om det kanske inte är den bästa möjliga metoden i alla fall, borde den fungera i i princip alla databasmotorer någonsin som försöker implementera ANSI 92 SQL



  1. Objektet 'DF__*' är beroende av kolumn '*' - Ändrar int till dubbel

  2. Använder som jokertecken i förberett uttalande

  3. Hur Tanh() fungerar i PostgreSQL

  4. SQL Server 2016:Alltid krypterad