Mysql
 sql >> Database >  >> RDS >> Mysql

Inserisci i record mancanti da una tabella all'altra usando mysql

È anche possibile utilizzare LEFT OUTER JOIN per quello. Ciò eviterà il sovraccarico delle sottoquery (quando il sistema potrebbe eseguire le sottoquery una volta per ciascuna record della query esterna) come nella risposta di John Woo, ed eviterà di fare lavoro non necessario sovrascrivendo 800 record già esistenti come in quello di user2340435:

INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;

Questo selezionerà prima tutte le righe da A e B tabelle che includono tutte le colonne di entrambe le tabelle, ma per le righe che esistono in A e non esistono in B tutte le colonne per B la tabella sarà NULL .Quindi filtra solo queste ultime righe (WHERE b.id IS NULL ), e infine inserisce tutte queste righe in B tabella.