tablo1 (id, isim) tablo2 (id, ad)
Sorgula:
SELECT name
FROM table2
-- that are not in table1 already
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
Q: Burada neler oluyor?
A: Kavramsal olarak, tablo1
den tüm satırları seçeriz ve her satır için tablo2
de name
sütunu için aynı değere sahip bir satır bulmaya çalışırız. Böyle bir satır yoksa, sonucumuzun table2
bölümünü o satır için boş bırakırız. Ardından, sonuçta yalnızca eşleşen satırın bulunmadığı satırları seçerek seçimimizi kısıtlarız. Son olarak, name
sütunu (var olduğundan emin olduğumuz table1
sütunu) hariç sonucumuzdaki tüm alanları yok sayarız.
Her durumda mümkün olan en performanslı yöntem olmasa da, ANSI 92 SQL'i uygulamaya çalışan temelde her veritabanı motorunda çalışmalıdır.
Ya yapabilirsin
SELECT name
FROM table2
WHERE name NOT IN
(SELECT name
FROM table1)
veya
SELECT name
FROM table2
WHERE NOT EXISTS
(SELECT *
FROM table1
WHERE table1.name = table2.name)
Bunu gerçekleştirmeye yönelik 3 teknik için bu soruya bakın