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..