Es ist auch möglich, LEFT OUTER JOIN
zu verwenden dafür. Dies vermeidet Unterabfrage-Overhead (wenn das System Unterabfragen einmal für jeden ausführen könnte Datensatz der äußeren Abfrage) wie in John Woos Antwort und vermeidet unnötige Arbeit, die bereits vorhandene 800 Datensätze überschreibt, wie in user2340435:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
Dadurch werden zuerst alle Zeilen von A
ausgewählt und B
Tabellen mit allen Spalten aus beiden Tabellen, aber für Zeilen, die in A
existieren und existieren nicht in B
alle Spalten für B
Tabelle wird NULL
sein . Dann filtert es nur solche letzteren Zeilen (WHERE b.id IS NULL
), und schließlich fügt es all diese Zeilen in B
ein Tabelle.