sql >> Databasteknik >  >> RDS >> Mysql

Hur infogar man i samma tabell i MySQL?

Ibland kan du behöva snabbt skapa mycket data för belastningstestning. Du kan välja och infoga i samma tabell i MySQL. Detta tillvägagångssätt växer snabbt dina befintliga tabeller. Det ger många skivor att spela med. Här är några sätt att göra det.

Infoga i samma tabell i MySQL

Syntax

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

Exempel
För en tabell tabellnamn med kolumnerna a, b, c

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

Infoga i samma tabell i MySQL alla poster från en tabell

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

Infoga i samma tabell i MySQL några poster från en tabell

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å ett dubblettvärdefel om ett av dessa fält är en primärnyckel eller om du har en unikhetsbegränsning för ett fält. Så här kan du undvika det.

Infoga i samma tabell i MySQL utan dubbletter

Syntax

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

Exempel

För en tabell tabellnamn med kolumnerna a, b, c och c är primärnyckel

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

Infoga i samma tabell i MySQL alla poster från en tabell

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

Infoga i samma tabell i MySQL några poster från en tabell

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äsa mer om Hur man gör en bulkinsert i MySQL

  1. Kan jag sammanfoga flera MySQL-rader i ett fält?

  2. automatisera rollback script oracle

  3. Hur man övervakar din ProxySQL med Prometheus och ClusterControl

  4. Räkna förekomsten av DISTINCT-värden