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

Comment insérer dans la même table dans MySQL?

Parfois, vous devrez peut-être créer rapidement beaucoup de données pour les tests de charge. Vous pouvez sélectionner et insérer dans la même table dans MySQL. Cette approche développe rapidement vos tables existantes. Cela donne beaucoup de disques à jouer. Voici quelques façons de le faire.

Insérer dans la même table dans MySQL

Syntaxe

INSERT INTO table_name ( field1, field2,...fieldN )
                       SELECT field1, field2, fieldN from table_name;

Exemple
Pour une table table_name avec les colonnes a, b, c

+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
+------+------+------+

Insérer dans la même table dans MySQL tous les enregistrements d'une table

mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
+------+------+------+

Insérer dans la même table dans MySQL certains enregistrements d'une table

mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
|   1  |   2  |   3  |
|   3  |   3  |   3  |
+------+------+------+

Vous pouvez obtenir une erreur de valeur en double si l'un de ces champs est une clé primaire ou si vous avez une contrainte d'unicité pour un champ. Voici comment vous pouvez l'éviter.

Insérer dans la même table dans MySQL sans doublons

Syntaxe

INSERT INTO table_name ( field1, field2,...fieldN )
                       SELECT field1, field2, fieldN from table_name
                       ON DUPLICATE KEY
                       UPDATE primary_key_field=<expression> ;

Exemple

Pour une table table_name avec les colonnes a, b, c et c est la clé primaire

+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
+------+------+------+

Insérer dans la même table dans MySQL tous les enregistrements d'une table

mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name ON DUPLICATE KEY c=c+1;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   1  |   2  |   4  |
|   4  |   5  |   7  |
|   7  |   8  |  10  |
+------+------+------+

Insérer dans la même table dans MySQL certains enregistrements d'une table

mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3 ON DUPLICATE KEY c=c+1;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   1  |   2  |   5  |
+------+------+------+

Vous pouvez en savoir plus sur Comment faire une insertion en masse dans MySQL