Det er også muligt at bruge LEFT OUTER JOIN
for det. Dette vil undgå overhead for underforespørgsler (når systemet muligvis udfører underforespørgsel én gang for hver registrering af ydre forespørgsel) som i John Woos svar, og vil undgå at udføre unødvendigt arbejde ved at overskrive allerede eksisterende 800 poster som i user2340435s ene:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
Dette vil først vælge alle rækker fra A
og B
tabeller inklusive alle kolonner fra begge tabeller, men for rækker som findes i A
og eksisterer ikke i B
alle kolonner for B
tabel vil være NULL
.Så filtrerer den kun sådanne sidstnævnte rækker (WHERE b.id IS NULL
), og til sidst indsætter den alle disse rækker i B
tabel.