J’ai une table annonce1 contenant 10 000 tuples, et une autre annonce2 qui en contient aussi 10 000. Tous les tuples sont différents. Le but ? Fusionner ces 2 tables. Export/Import classique créé des problèmes de Primary Key qui se dupliquent (mon ID est en auto_increment).
Moralité :
INSERT INTO annonce (ann_surface, ann_prix) SELECT ann_surface, ann_prix FROM annonce2 WHERE ann_surface>150 AND ann_ville!=0;
Une petite requête SQL imbriquée (embedded) et pof le tour est joué !
Deux choses importantes à remarquer :
- La syntaxe : le VALUES n’apparait pas ici. (moi je m’étais fait avoir)
- Inutile de préciser de préfixes même si le champ des tables ont le même nom. D’ailleurs j’ai testé avec
annonce1 a1 (a1.ann_surface, ...
et cela n’a pas fonctionné. J’en déduis que les préfixes doivent être interdit avec la commande INSERT.
La doc MySQL n’est pas avare à propos de la commande INSERT, pas plus que les commentaires. Profitons-en !