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

Dùng INSERT INTO ... SELECT đúng cách trong MySQL tránh lỗi 1064

Câu lệnh INSERT INTO ... SELECT sao chép dữ liệu từ bảng này sang bảng khác. Cú pháp đúng: chỉ liệt kê cột đích, không dùng VALUES.

Ví dụ minh họa

Tạo bảng nguồn:

mysql> CREATE TABLE DemoTable1 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100)
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1(FirstName) VALUES('John'), ('Chris');

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

mysql> CREATE TABLE DemoTable2 (
    CustomerId INT,
    CustomerName VARCHAR(100)
);

Sao chép dữ liệu:

mysql> INSERT INTO DemoTable2(CustomerId, CustomerName)
    -> SELECT Id, FirstName FROM DemoTable1;

Kiểm tra:

mysql> SELECT * FROM DemoTable2;

Kết quả

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
| 1          | John         |
| 2          | Chris        |
+------------+--------------+

Lỗi 1064 thường gặp:

  • Quên bỏ VALUES (cú pháp INSERT ... VALUES ... SELECT sai).
  • Số cột đích không khớp số cột SELECT.
  • Kiểu dữ liệu không tương thích.
Luôn chạy SELECT riêng trước để kiểm tra dữ liệu nguồn.