Cú pháp SQL INSERT INTO SELECT

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.

insert into select

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.

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận