sql >> Database teknologi >  >> RDS >> Mysql

Hvordan indsætter man i samme tabel i MySQL?

Nogle gange skal du muligvis hurtigt oprette en masse data til belastningstest. Du kan vælge og indsætte i samme tabel i MySQL. Denne tilgang vokser hurtigt dine eksisterende borde. Det giver mange plader at spille med. Her er et par måder at gøre det på.

Indsæt i samme tabel i MySQL

Syntaks

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

Eksempel
For en tabel tabelnavn med kolonner a, b, c

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

Indsæt alle poster fra en tabel i samme tabel i MySQL

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

Indsæt nogle poster fra en tabel i samme tabel i MySQL

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

Du kan få en dubletværdifejl, hvis et af disse felter er en primær nøgle, eller du har en unikhedsbegrænsning for et felt. Sådan kan du undgå det.

Indsæt i samme tabel i MySQL uden dubletter

Syntaks

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

Eksempel

For en tabel tabelnavn med kolonner a, b, c og c er primær nøgle

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

Indsæt alle poster fra en tabel i samme tabel i MySQL

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

Indsæt nogle poster fra en tabel i samme tabel i MySQL

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

Du kan læse mere om Sådan laver du et bulkinsert i MySQL

  1. Sådan rettes:"SQLServerAgent kører ikke i øjeblikket ..."

  2. GROUP eller DISTINCT efter JOIN returnerer dubletter

  3. Hvordan får man sidste dag i sidste uge i sql?

  4. Gør et stykke tid / loop for at få 10 tilfældige resultater