sql >> Database >  >> RDS >> Mysql

Hoe invoegen in dezelfde tabel in MySQL?

Soms moet u snel veel gegevens maken voor belastingtests. U kunt selecteren en invoegen in dezelfde tabel in MySQL. Deze aanpak laat uw bestaande tabellen snel groeien. Het geeft veel platen om mee te spelen. Hier zijn een paar manieren om dit te doen.

Invoegen in dezelfde tabel in MySQL

Syntaxis

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

Voorbeeld
Voor een tafel table_name met kolommen a, b, c

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

Voeg in dezelfde tabel in MySQL alle records uit een tabel in

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  |
+------+------+------+

Voeg in dezelfde tabel in MySQL enkele records uit een tabel in

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  |
+------+------+------+

U krijgt mogelijk een dubbele waardefout als een van deze velden een primaire sleutel is of als u een uniciteitsbeperking voor een veld hebt. Hier leest u hoe u het kunt vermijden.

Invoegen in dezelfde tabel in MySQL zonder duplicaten

Syntaxis

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

Voorbeeld

Voor een tafel table_name met kolommen a, b, c en c is de primaire sleutel

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

Voeg in dezelfde tabel in MySQL alle records uit een tabel in

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  |
+------+------+------+

Voeg in dezelfde tabel in MySQL enkele records uit een tabel in

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  |
+------+------+------+

U kunt meer lezen over Hoe u een bulk invoegt in MySQL

  1. Hoe kan ik fouten voor mijn MySQLi-query weergeven?

  2. Laatst uitgevoerde zoekopdrachten voor een specifieke database

  3. Tips voor het afstemmen van PostgreSQL-prestaties

  4. Gids voor het ontwerpen van een database voor RBAC in MySQL