Sao chép dữ liệu giữa các bảng trong MySQL
Để sao chép dữ liệu từ cột của bảng này sang cột của bảng khác (trong cùng một database), bạn có thể sử dụng câu lệnh INSERT INTO ... SELECT.
Ví dụ minh họa
Trước tiên, tạo bảng nguồn DemoTable1:
mysql> CREATE TABLE DemoTable1 (PlayerScore INT); Query OK, 0 rows affected (0.46 sec)
Chèn một số bản ghi vào bảng:
mysql> INSERT INTO DemoTable1 VALUES(98); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DemoTable1 VALUES(81); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable1 VALUES(76); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO DemoTable1 VALUES(88); Query OK, 1 row affected (0.15 sec)
Xem dữ liệu trong bảng:
mysql> SELECT * FROM DemoTable1;
Kết quả:
+-------------+ | PlayerScore | +-------------+ | 98 | | 81 | | 76 | | 88 | +-------------+ 4 rows in set (0.00 sec)
Tạo bảng đích DemoTable2:
mysql> CREATE TABLE DemoTable2 (Marks INT); Query OK, 0 rows affected (0.47 sec)
Câu lệnh sao chép dữ liệu từ cột PlayerScore sang cột Marks:
mysql> INSERT INTO DemoTable2(Marks) SELECT PlayerScore FROM DemoTable1; Query OK, 4 rows affected (0.19 sec) Records: 4 Duplicates: 0 Warnings: 0
Kiểm tra dữ liệu trong bảng đích:
mysql> SELECT * FROM DemoTable2;
Kết quả:
+-------+ | Marks | +-------+ | 98 | | 81 | | 76 | | 88 | +-------+ 4 rows in set (0.00 sec)
Lưu ý quan trọng
- Cả hai cột phải có kiểu dữ liệu tương thích nhau
- Số lượng cột trong mệnh đề INSERT phải khớp với số lượng cột trả về từ SELECT
- Có thể thêm điều kiện WHERE vào mệnh đề SELECT để lọc dữ liệu