Bunu gerçekleştirmek için left outer join
kullanabilirsiniz:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
ne yapar sizin ikinci tabloda (table2
) ile birleştiren, ilk tablo (table1
) alır ve table2
için null
doldurur olduğunu table1
'daki herhangi bir satırdaki table2
numaralı satırdaki bir satır ile eşleşmeyen sütunlar. Ardından, hiçbir eşleşme bulunamayan yalnızca table1
satırını seçerek bunu filtreler.
Alternatif olarak, not exists
kullanabilirsiniz:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Bu left semi join
gerçekleştirir ve left outer join
yaptığının aynısını yapmak esasen olacaktır. Dizinlerinize bağlı olarak, diğerinden daha hızlı olabilir, ancak her ikisi de uygun seçenekler olabilir. MySQL, optimizing the joins üzerinde bazı iyi belgelere sahiptir, bu yüzden bunu kontrol etmelisiniz ..
@ musoNic80 Ayrıca bkz http://www.codinghorror.com/blog/archives/000976.html –