Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wstawić do tej samej tabeli w MySQL?

Czasami może być konieczne szybkie utworzenie dużej ilości danych do testowania obciążenia. Możesz wybrać i wstawić do tej samej tabeli w MySQL. Takie podejście szybko powiększa istniejące tabele. Daje mnóstwo płyt do zabawy. Oto kilka sposobów, aby to zrobić.

Wstaw do tej samej tabeli w MySQL

Składnia

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

Przykład
Dla tabeli nazwa_tabeli z kolumnami a, b, c

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

Wstaw do tej samej tabeli w MySQL wszystkie rekordy z tabeli

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

Wstaw do tej samej tabeli w MySQL kilka rekordów z tabeli

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

Możesz otrzymać błąd zduplikowanej wartości, jeśli jedno z tych pól jest kluczem podstawowym lub masz ograniczenie unikalności dla pola. Oto jak możesz tego uniknąć.

Wstaw do tej samej tabeli w MySQL bez duplikatów

Składnia

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

Przykład

Dla tabeli nazwa_tabeli z kolumnami a, b, c i c to klucz podstawowy

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

Wstaw do tej samej tabeli w MySQL wszystkie rekordy z tabeli

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

Wstaw do tej samej tabeli w MySQL kilka rekordów z tabeli

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

Możesz przeczytać więcej o tym, jak zrobić zbiorcze wstawianie w MySQL

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między MySQL, MySQLi i PDO?

  2. Konwertuj znaki latin1 w tabeli UTF8 na UTF8

  3. JSON_MERGE_PATCH() vs JSON_MERGE_PRESERVE() w MySQL:jaka jest różnica?

  4. Jak wstawić wybrane kolumny z pliku CSV do bazy danych MySQL za pomocą funkcji LOAD DATA INFILE?

  5. Wysyłanie wszystkich błędów PHP do bazy danych, a nie error_log