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