Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Insira registros ausentes de uma tabela para outra usando mysql


Também é possível usar LEFT OUTER JOIN por isso. Isto irá evitar sobrecarga de subconsulta (quando o sistema pode executar subconsulta uma vez para cada registro de consulta externa) como na resposta de John Woo, e evitará fazer trabalho desnecessário sobrescrevendo 800 registros já existentes, como no de user2340435:
INSERT INTO b
SELECT a.* FROM a
LEFT OUTER JOIN b ON b.id = a.id
WHERE b.id IS NULL;

Isso primeiro selecionará todas as linhas de A e B tabelas incluindo todas as colunas de ambas as tabelas, mas para linhas que existem em A e não existem em B todas as colunas para B tabela será NULL .Em seguida, ele filtra apenas essas últimas linhas (WHERE b.id IS NULL ), e finalmente insere todas essas linhas em B tabela.