Możliwe jest również użycie LEFT OUTER JOIN za to. Pozwoli to uniknąć narzutu na podzapytanie (kiedy system może wykonać podzapytanie raz dla każdego rekord zapytania zewnętrznego) jak w odpowiedzi Johna Woo i uniknie niepotrzebnej pracy nad nadpisywaniem już istniejących 800 rekordów, jak w przypadku użytkownika 2340435:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
To najpierw wybierze wszystkie wiersze z A i B tabele zawierające wszystkie kolumny z obu tabel, ale dla wierszy, które istnieją w A i nie istnieją w B wszystkie kolumny dla B tabela będzie NULL .Następnie filtruje tylko te ostatnie wiersze (WHERE b.id IS NULL ), a na końcu wstawia wszystkie te wiersze do B tabela.