Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để chèn vào cùng một bảng trong MySQL?

Đôi khi bạn có thể cần nhanh chóng tạo nhiều dữ liệu để kiểm tra tải. Bạn có thể chọn và chèn vào cùng một bảng trong MySQL. Cách tiếp cận này nhanh chóng phát triển các bảng hiện có của bạn. Nó cung cấp rất nhiều bản ghi để chơi với. Dưới đây là một số cách để làm điều đó.

Chèn vào cùng một bảng trong MySQL

Cú pháp

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

Ví dụ
Đối với bảng table_name với các cột a, b, c

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

Chèn vào cùng một bảng trong MySQL tất cả các bản ghi từ một bảng

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

Chèn vào cùng một bảng trong MySQL một số bản ghi từ một bảng

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

Bạn có thể gặp lỗi giá trị trùng lặp nếu một trong những trường này là khóa chính hoặc bạn có ràng buộc về tính duy nhất cho một trường. Đây là cách bạn có thể tránh nó.

Chèn vào cùng một bảng trong MySQL mà không có bản sao

Cú pháp

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

Ví dụ

Đối với bảng table_name với các cột a, b, c và c là khóa chính

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

Chèn vào cùng một bảng trong MySQL tất cả các bản ghi từ một bảng

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

Chèn vào cùng một bảng trong MySQL một số bản ghi từ một bảng

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

Bạn có thể đọc thêm về Cách thực hiện chèn hàng loạt trong 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. Sự khác biệt giữa VARCHAR và CHAR là gì?

  2. Xây dựng lại MySQL 8.0 Replication Slave bằng cách sử dụng một plugin nhân bản

  3. Cảnh báo:mysqli_connect ():(HY000 / 2002):Không có tệp hoặc thư mục như vậy

  4. Lỗi MySQL:đặc tả khóa không có độ dài khóa

  5. MySQLi count (*) luôn trả về 1