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

Kết hợp INSERT, VALUES và SELECT trong MySQL

INSERT ... SELECT có điều kiện: Copy dòng chọn lọc

Cú pháp cho phép chèn vào bảng đích các cột từ bảng nguồn dựa trên điều kiện WHERE.

Cú pháp

INSERT INTO bangDich (cot1, cot2, ...)
SELECT cot1, cot2, ...
FROM bangNguon
WHERE dieu_kien;

Ví dụ minh họa

Tạo bảng đích (rỗng):

CREATE TABLE CombiningInsertValuesSelect (
    EmployeeId VARCHAR(10),
    EmployeeName VARCHAR(100),
    EmployeeAge INT
);

Tạo bảng nguồn có dữ liệu:

CREATE TABLE getAllValues (Id VARCHAR(100), Name VARCHAR(100), Age INT);
INSERT INTO getAllValues VALUES
('EMP-1','John',26), ('EMP-2','Carol',22), ('EMP-3','Sam',24),
('EMP-4','David',27), ('EMP-5','Bob',21);

Chèn chỉ nhân viên EMP-4:

INSERT INTO CombiningInsertValuesSelect (EmployeeId, EmployeeName, EmployeeAge)
SELECT Id, Name, Age FROM getAllValues WHERE Id = 'EMP-4';

Kết quả

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-4      | David        |          27 |
+------------+--------------+-------------+

Mở rộng: Biến đổi dữ liệu khi chèn

INSERT INTO bangDich (ma, ten_viet_hoa, tuoi_kep_doi)
SELECT Id, UPPER(Name), Age * 2 FROM bangNguon WHERE Age > 20;

Lưu ý

  • Không dùng VALUES khi có SELECT.
  • Số cột và thứ tự phải khớp.
  • Có thể dùng INSERT IGNORE hoặc ON DUPLICATE KEY UPDATE.