SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
O :Co se tady děje?
A :Koncepčně vybíráme všechny řádky z table1
a pro každý řádek se snažíme najít řádek v table2
se stejnou hodnotou pro name
sloupec. Pokud takový řádek neexistuje, ponecháme pouze table2
část našeho výsledku je pro tento řádek prázdná. Poté omezíme náš výběr tím, že ve výsledku vybereme pouze ty řádky, kde odpovídající řádek neexistuje. Nakonec ignorujeme všechna pole z našeho výsledku kromě name
sloupec (ten, o kterém jsme si jisti, že existuje, z table1
).
I když to nemusí být nejvýkonnější možná metoda ve všech případech, měla by fungovat v podstatě v každém databázovém stroji, který se kdy pokouší implementovat ANSI 92 SQL