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

Jak zrobić zbiorcze wstawianie w MySQL?

Wstawianie zbiorcze w MySQL ma miejsce, gdy musisz wstawić wiele rekordów do tabeli naraz. Może służyć do szybkiego tworzenia danych do testów. Przepisywanie instrukcji INSERT dla każdego wiersza jest męczące. Oto jak możesz zbiorczo wstawić do MySQL.

Wstawianie zbiorcze w MySQL

Składnia

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..;

a1, a2, a3,... – wartości dla pola 1
b1, b2, b3,... – wartości dla pola 2
c1, c2, c3,... – wartości dla pola 3

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

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3);
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
+------+------+------+

Jak widać, wstawianie zbiorcze w MySQL pozwala na duplikowanie wierszy/kolumn. Może to spowodować zduplikowanie kluczy podstawowych. Oto jak możesz tego uniknąć.

Zbiorcze wstawianie do MySQL bez duplikatów

Używamy klauzuli ON DUPLICATE KEY. Wykrywa zduplikowane wartości klucza podstawowego. Dodajemy również klauzulę UPDATE, aby zaktualizować zduplikowaną wartość.

Składnia

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..
                       ON DUPLICATE KEY
                       UPDATE primary_key_field=<expression> ;

a1, a2, a3,... – wartości dla pola 1
b1, b2, b3,... – wartości dla pola 2
c1, c2, c3,... – wartości dla pola 3

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

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3)
ON DUPLICATE KEY UPDATE c=c+1;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   4  |
+------+------+------+

Możesz także zaktualizować wartość na podstawie innych kolumn

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja UCASE() w MySQL

  2. Ostrzeżenie:Nie można modyfikować informacji nagłówka - nagłówki już wysłane przez błąd

  3. WYBIERZ * GDZIE NIE ISTNIEJE

  4. mysql zapytanie przestawne/przestawne

  5. „0000-00-00 00:00:00” nie może być reprezentowane jako błąd java.sql.Timestamp