Câu lệnh INSERT INTO SELECT trong SQL được sử dụng để thêm dữ liệu từ một truy vấn con (subquery) vào một bảng khác.
Cú pháp:
--##1 Thêm có lực chọn cột INSERT INTO <destination_table> (column_name1, column_name2, ...) SELECT column_name1, column_name2, ... FROM <source_table> [WHERE <condition>]; --##2 thêm tất cả các cột INSERT INTO table2 SELECT * FROM table1 WHERE condition;
Giải thích:
- INSERT INTO <destination_table>: Tên của bảng đích để thêm dữ liệu.
- (column_name1, column_name2, …): Danh sách các cột trong bảng đích để thêm dữ liệu.
- SELECT column_name1, column_name2, …: Chọn các cột và dữ liệu từ bảng nguồn.
- FROM <source_table>: Tên của bảng nguồn chứa dữ liệu muốn thêm.
- [WHERE <condition>]: Điều kiện lọc dữ liệu từ bảng nguồn (tùy chọn).
Ví dụ:
--Thêm tất cả khách hàng từ bang "Customers" vào bảng "Orders": INSERT INTO Orders (CustomerID, Name, Email) SELECT CustomerID, Name, Email FROM Customers; --Thêm tất cả sản phẩm có giá cao hơn 1000000 vào bảng "SpecialOffers": INSERT INTO SpecialOffers (ProductID, ProductName, Price) SELECT ProductID, ProductName, Price FROM Products WHERE Price > 1000000; --Thêm các nhân viên mới với mức lương cao hơn mức lương trung bình của phòng ban: INSERT INTO Employees (FirstName, LastName, DepartmentID, Salary) SELECT FirstName, LastName, DepartmentID, Salary FROM NewEmployees WHERE Salary > ( SELECT AVG(Salary) FROM Employees WHERE DepartmentID = NewEmployees.DepartmentID );
Lưu ý:
- Cấu trúc và kiểu dữ liệu của các cột trong bảng đích và dữ liệu được chọn từ bảng nguồn phải phù hợp với nhau.
- Câu lệnh INSERT INTO SELECT sẽ không ghi đè dữ liệu hiện có trong bảng đích.
- Bạn có thể sử dụng INSERT INTO SELECT để thêm dữ liệu mới hoặc cập nhật dữ liệu hiện có trong bảng đích.