Bạn có thể sử dụng một 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 không là phải mất bảng đầu tiên của bạn (table1
), gia nhập nó với bảng thứ hai của bạn (table2
), và điền vào null
cho table2
các cột ở 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 các hàng table1
nơi không tìm thấy kết quả 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)
này thực hiện một left semi join
, và về cơ bản sẽ làm điều tương tự rằng left outer join
làm. Tùy thuộc vào các chỉ mục của bạn, một chỉ số có thể nhanh hơn chỉ mục khác, nhưng cả hai đều là các tùy chọn khả thi. MySQL có một số tài liệu tốt trên optimizing the joins, vì vậy bạn nên kiểm tra xem điều đó ..
@ musoNic80 Ngoài ra, hãy kiểm tra http://www.codinghorror.com/blog/archives/000976.html –