Dimungkinkan juga untuk menggunakan LEFT OUTER JOIN
untuk itu. Ini akan menghindari overhead subquery (ketika sistem mungkin mengeksekusi subquery satu kali untuk setiap record kueri luar) seperti dalam jawaban John Woo, dan akan menghindari melakukan pekerjaan yang tidak perlu menimpa 800 catatan yang sudah ada seperti pada catatan pengguna2340435:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
Ini pertama-tama akan memilih semua baris dari A
dan B
tabel termasuk semua kolom dari kedua tabel, tetapi untuk baris yang ada di A
dan tidak ada di B
semua kolom untuk B
tabel akan menjadi NULL
.Kemudian filter hanya baris terakhir tersebut (WHERE b.id IS NULL
), dan akhirnya memasukkan semua baris ini ke dalam B
tabel.