Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insérer les enregistrements manquants d'une table à une autre en utilisant mysql

Il est également possible d'utiliser LEFT OUTER JOIN pour ça. Cela évitera la surcharge de la sous-requête (lorsque le système peut exécuter la sous-requête une fois pour chaque enregistrement de requête externe) comme dans la réponse de John Woo, et évitera de faire un travail inutile en écrasant 800 enregistrements déjà existants comme dans celui de user2340435 :

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

Cela sélectionnera d'abord toutes les lignes de A et B tables incluant toutes les colonnes des deux tables, mais pour les lignes qui existent dans A et n'existent pas dans B toutes les colonnes pour B table sera NULL .Ensuite, il filtre uniquement ces dernières lignes (WHERE b.id IS NULL ), et enfin il insère toutes ces lignes dans B tableau.