SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
P :Co się tutaj dzieje?
A :Koncepcyjnie wybieramy wszystkie wiersze z table1
a dla każdego wiersza próbujemy znaleźć wiersz w table2
z tą samą wartością dla name
kolumna. Jeśli nie ma takiego wiersza, po prostu zostawiamy table2
część naszego wyniku jest pusta dla tego wiersza. Następnie ograniczamy nasz wybór, wybierając tylko te wiersze w wyniku, w których pasujący wiersz nie istnieje. Na koniec ignorujemy wszystkie pola z naszego wyniku z wyjątkiem name
kolumna (ta, o której jesteśmy pewni, że istnieje, z table1
).
Chociaż może nie być to najwydajniejsza możliwa metoda we wszystkich przypadkach, powinna działać w zasadzie w każdym silniku bazy danych, który kiedykolwiek próbuje zaimplementować ANSI 92 SQL