Можете да използвате 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 има добра документация за оптимизирането на присъединяванията , така че трябва да проверите това...