Het is ook mogelijk om LEFT OUTER JOIN
. te gebruiken daarom. Dit voorkomt overhead voor subquery's (wanneer het systeem een subquery één keer uitvoert voor elke record van buitenste query) zoals in het antwoord van John Woo, en vermijdt onnodig werk door reeds bestaande 800 records te overschrijven zoals in die van gebruiker2340435:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
Dit selecteert eerst alle rijen van A
en B
tabellen inclusief alle kolommen van beide tabellen, maar voor rijen die bestaan in A
en bestaan niet in B
alle kolommen voor B
tabel is NULL
.Dan filtert het alleen die laatste rijen (WHERE b.id IS NULL
), en ten slotte voegt het al deze rijen in B
tafel.