Đô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