Můžete použít left outer join
jak toho dosáhnout:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
To znamená, že si vezmete vaši první tabulku (table1
), připojí ji k vaší druhé tabulce (table2
) a vyplní null
pro table2
sloupce v libovolném řádku v table1
který neodpovídá řádku v table2
. Poté to odfiltruje tak, že vybere pouze table1
řádky, kde nebyla nalezena žádná shoda.
Případně můžete také použít not exists
:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Tím se provede left semi join
a v podstatě udělá to samé, co left outer join
dělá. V závislosti na vašich indexech může být jeden rychlejší než druhý, ale oba jsou životaschopné možnosti. MySQL má dobrou dokumentaci o optimalizaci spojení , takže byste to měli zkontrolovat..