SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
Q :Wat gebeurt hier?
A :Conceptueel selecteren we alle rijen uit table1
en voor elke rij proberen we een rij te vinden in table2
met dezelfde waarde voor de name
kolom. Als zo'n rij niet bestaat, laten we gewoon de table2
gedeelte van ons resultaat leeg voor die rij. Vervolgens beperken we onze selectie door alleen die rijen in het resultaat te kiezen waar de overeenkomende rij niet bestaat. Ten slotte negeren we alle velden van ons resultaat, behalve de name
kolom (degene waarvan we zeker weten dat die bestaat, uit table1
).
Hoewel het misschien niet in alle gevallen de meest performante methode is, zou het in vrijwel elke database-engine moeten werken die ooit ANSI 92 SQL probeert te implementeren