können Sie ein left outer join
verwenden, um dies zu erreichen:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Was dies tut, ist es Ihre erste Tabelle nimmt (table1
), verbindet es mit dem zweiten Tisch (table2
) und füllt null
für die table2
Spalten in einer beliebigen Zeile in table1
, die keiner Zeile in table2
entspricht. Dann filtert es das durch Auswählen nur der table1
Zeilen, wo keine Übereinstimmung gefunden werden konnte.
Alternativ können Sie auch not exists
verwenden:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Dies führt eine left semi join
und tut im Wesentlichen die gleiche Sache, dass die left outer join
tut. Abhängig von Ihren Indizes kann einer schneller sein als der andere, aber beide sind praktikable Optionen. MySQL hat einige gute Dokumentation auf optimizing the joins, also sollten Sie das überprüfen ..
@ musoNic80 Überprüfen Sie auch http://www.codinghorror.com/blog/archives/000976.html –