Bạn có thể sử dụng left outer join
để thực hiện điều này:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Điều này làm là nó chiếm bảng đầu tiên của bạn (table1
), kết hợp nó với bảng thứ hai của bạn (table2
), và điền vào null
cho table2
cột trong bất kỳ hàng nào trong table1
không khớp với một hàng trong table2
. Sau đó, nó lọc ra bằng cách chỉ chọn table1
không tìm thấy hàng nào phù hợp.
Ngoài ra, bạn cũng có thể sử dụng not exists
:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Điều này thực hiện left semi join
và về cơ bản sẽ làm điều tương tự mà left outer join
làm. Tùy thuộc vào chỉ mục của bạn, một cái có thể nhanh hơn cái kia, nhưng cả hai đều là những lựa chọn khả thi. MySQL có một số tài liệu tốt về tối ưu hóa liên kết , vì vậy bạn nên kiểm tra điều đó ..