Maison > Questions et réponses > le corps du texte
P粉9856865572023-08-25 00:31:09
INSERT INTO db1.table SELECT * FROM db2.table;
Si vous souhaitez copier des données dans la même table dans une base de données différente.
P粉6638838622023-08-25 00:15:21
Votre requête devrait ressembler à ceci :
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT column1, column2 FROM oldDatabase.table1;
Mise à jour
Étant donné que cette réponse a attiré plus d'attention que prévu, je devrais développer cette réponse. Premièrement, cela n’est peut-être pas évident d’après la réponse elle-même, mais les noms de colonnes n’ont pas besoin d’être les mêmes. Ainsi, ce qui suit fonctionnera également (en supposant que les colonnes existent dans leurs tableaux respectifs) :
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;
De plus, il n'est même pas nécessaire qu'il s'agisse de véritables colonnes du tableau. Un exemple de transformation de données que j'utilise souvent est :
INSERT INTO newDatabase.users (name, city, email, username, added_by) SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;
Donc, la règle la plus évidente maintenant est peut-être que tant que la requête SELECT renvoie le même nombre de colonnes que celui requis par la requête INSERT, elle peut être utilisée à la place de VALEURS.