Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie füge ich in MySQL in dieselbe Tabelle ein?

Manchmal müssen Sie schnell viele Daten für Lasttests erstellen. Sie können in MySQL dieselbe Tabelle auswählen und einfügen. Dieser Ansatz erweitert Ihre vorhandenen Tabellen schnell. Es gibt eine Menge Platten zum Spielen. Hier sind einige Möglichkeiten, dies zu tun.

In dieselbe Tabelle in MySQL einfügen

Syntax

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

Beispiel
Für eine Tabelle table_name mit Spalten a, b, c

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

Alle Datensätze aus einer Tabelle in dieselbe Tabelle in MySQL einfügen

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

Einige Datensätze aus einer Tabelle in dieselbe Tabelle in MySQL einfügen

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

Sie erhalten möglicherweise einen Fehler wegen doppelter Werte, wenn eines dieser Felder ein Primärschlüssel ist oder Sie eine Eindeutigkeitsbeschränkung für ein Feld haben. So können Sie das vermeiden.

Einfügen in dieselbe Tabelle in MySQL ohne Duplikate

Syntax

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

Beispiel

Für eine Tabelle table_name mit den Spalten a, b, c und c ist der Primärschlüssel

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

Alle Datensätze aus einer Tabelle in dieselbe Tabelle in MySQL einfügen

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

Einige Datensätze aus einer Tabelle in dieselbe Tabelle in MySQL einfügen

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

Sie können mehr darüber lesen, wie man eine Masseneinfügung in MySQL durchführt