U kunt een linker buitenste join
gebruiken
om dit te bereiken:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Wat dit doet, is dat je eerste tafel nodig is (tabel1
), voegt het samen met uw tweede tafel (table2
), en vult null
. in voor de tabel2
kolommen in een rij in tabel1
die niet overeenkomt met een rij in tabel2
. Vervolgens filtert het dat eruit door alleen de tabel1
. te selecteren rijen waar geen overeenkomst kon worden gevonden.
Als alternatief kunt u ook
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Dit voert een linkse semi-join uit
, en zal in wezen hetzelfde doen als de linker buitenste join
doet. Afhankelijk van uw indexen kan de ene sneller zijn dan de andere, maar beide zijn haalbare opties. MySQL heeft goede documentatie over het optimaliseren van de joins , dus je moet dat eens bekijken..