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.