Можете да използвате left outer join
за да постигнете това:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Това, което прави, е, че отнема първата ви таблица (table1 ), го присъединява към втората ви таблица (table2 ) и попълва null за table2 колони във всеки ред в table1 който не съвпада с ред в table2 . След това филтрира това, като избере само table1 редове, където не може да бъде намерено съвпадение.
Като алтернатива можете също да използвате not exists
:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Това извършва left semi join , и по същество ще направи същото, което left outer join прави. В зависимост от вашите индекси, единият може да е по-бърз от другия, но и двете са жизнеспособни опции. MySQL има добра документация за оптимизирането на присъединяванията , така че трябва да проверите това...