Det är också möjligt att använda LEFT OUTER JOIN
för det. Detta kommer att undvika underfrågans overhead (när systemet kan köra underfrågan en gång för varje post av yttre fråga) som i John Woos svar, och kommer att undvika onödigt arbete genom att skriva över redan befintliga 800 poster som i user2340435:s:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;
Detta kommer först att välja alla rader från A
och B
tabeller inklusive alla kolumner från båda tabellerna, men för rader som finns i A
och finns inte i B
alla kolumner för B
tabellen kommer att vara NULL
.Då filtrerar den bara sådana senare rader (WHERE b.id IS NULL
), och till sist infogar den alla dessa rader i B
bord.