Du kan bruge en venstre ydre joinforbindelse
for at opnå dette:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Hvad dette gør, er, at det tager din første tabel (tabel1
), forbinder den med din anden tabel (tabel2
), og udfylder null
for tabel2
kolonner i enhver række i tabel1
der ikke matcher en række i tabel2
. Derefter filtrerer den det fra ved kun at vælge tabel1
rækker, hvor der ikke kunne findes noget match.
Alternativt kan du også bruge findes ikke :
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Dette udfører en venstre semi join
, og vil i det væsentlige gøre det samme som den ydre venstre join
gør. Afhængigt af dine indekser kan det ene være hurtigere end det andet, men begge er levedygtige muligheder. MySQL har noget god dokumentation om optimering af joinforbindelserne a> , så du bør tjekke det ud..