Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chèn dữ liệu vào bảng từ SELECT bảng khác trong MySQL

Sử dụng INSERT INTO ... SELECT để sao chép dữ liệu từ bảng này sang bảng khác.

Ví dụ minh họa

Tạo bảng nguồn:

mysql> CREATE TABLE DemoTable1 (
    Id INT, Name VARCHAR(20), Age INT
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1 VALUES(100, 'Chris', 24), (101, 'Adam', 23), (102, 'John', 25), (103, 'Carol', 26);

Tạo bảng đích (cấu trúc khác tên cột):

mysql> CREATE TABLE DemoTable2 (
    EmployeeId INT, EmployeeFirstName VARCHAR(20), EmployeeAge INT
);

Sao chép hàng có Id = 101 từ bảng 1 sang bảng 2 (map cột):

mysql> INSERT INTO DemoTable2(EmployeeId, EmployeeFirstName, EmployeeAge)
    SELECT Id, Name, Age FROM DemoTable1 WHERE Id = 101;

Kết quả bảng đích:

mysql> SELECT * FROM DemoTable2;
+------------+-------------------+-------------+
| EmployeeId | EmployeeFirstName | EmployeeAge |
+------------+-------------------+-------------+
| 101        | Adam              | 23          |
+------------+-------------------+-------------+

Lưu ý:

  • Số cột và kiểu dữ liệu trong SELECT phải khớp với danh sách cột INSERT.
  • Có thể dùng SELECT * nếu cấu trúc y hệt.
  • INSERT IGNORE hoặc ON DUPLICATE KEY UPDATE để xử lý trùng khóa.