Du kan använda en vänster yttre koppling
för att åstadkomma detta:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Vad detta gör är att det tar din första tabell (tabell1 ), sammanfogar den med din andra tabell (tabell2 ), och fyller i null för tabell2 kolumner i valfri rad i tabell1 som inte matchar en rad i tabell2 . Sedan filtrerar den bort det genom att bara välja tabell1 rader där ingen matchning kunde hittas.
Alternativt kan du också använda finns inte :
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Detta utför en left semi join , och kommer i huvudsak att göra samma sak som den vänstra yttre kopplingen gör. Beroende på dina index kan det ena vara snabbare än det andra, men båda är genomförbara alternativ. MySQL har en del bra dokumentation om optimering av sammanfogningarna , så du borde kolla upp det..