Anda dapat menggunakan left outer join
untuk mencapai ini:
select
t1.tid
from
table1 t1
left outer join table2 t2 on
t1.tid = t2.tid
where
t2.tid is null
Apa yang dilakukan adalah mengambil tabel pertama Anda (table1
), gabungkan dengan tabel kedua Anda (table2
), dan isi null
untuk table2
kolom di setiap baris di table1
yang tidak cocok dengan baris di table2
. Kemudian, itu menyaringnya dengan memilih hanya table1
baris di mana tidak ada yang cocok.
Atau, Anda juga dapat menggunakan not exists
:
select
t1.tid
from
table1 t1
where
not exists (select 1 from table2 t2 where t2.tid = t1.tid)
Ini melakukan left semi join
, dan pada dasarnya akan melakukan hal yang sama dengan left outer join
melakukan. Bergantung pada indeks Anda, yang satu mungkin lebih cepat dari yang lain, tetapi keduanya merupakan opsi yang layak. MySQL memiliki beberapa dokumentasi yang bagus tentang mengoptimalkan gabungan , jadi Anda harus memeriksanya..