W3School

Toán tử SQL UNION

Toán tử UNION được sử dụng để kết hợp tập hợp kết quả của hai hoặc nhiều  câu lệnh SELECT.

  • Mọi câu lệnh SELECT bên trong UNION phải có cùng số cột
  • Các cột cũng phải có kiểu dữ liệu tương tự
  • Các cột trong mọi câu lệnh SELECT cũng phải theo cùng một thứ tự

Cú pháp UNION

Cú pháp UNION ALL

Toán tử UNION chỉ chọn các giá trị riêng biệt, tức là nếu có hai dòng giống hệt sau ở hai SELECT thì kết quả trả về sẽ chỉ hiện thị ra một dòng dữ liệu. Để cho phép các giá trị trùng lặp, hãy sử dụng UNION ALL:

Lưu ý: Tên cột trong tập kết quả thường bằng tên cột trong câu lệnh SELECT đầu tiên. Tức là ví dụ bạn SELECT “CUSTOMER” AS Type, … UINON SELECT “Supplier” …, tên cột trả về sẽ là Type.

Bạn có thể download cơ sở dữ liệu Northwind để bắt đầu thực hành tại đây:

- Dành cho Sql Server, MS Access Download
- Dành cho Mysql: Tạo bảng trước với Download Table sau đó hãy điền data với Download Data
- Dành cho Oracle Download

Lưu ý: Tên bảng trong CSDL cho SQL Server thường được viết hoa chữ đầu. Với Mysql thì tên bảng được viết thường. Và với Oracle thì tên bảng toàn bộ được viết hoa. Bạn hãy viết đúng tên bảng trong query của mình nhé.

Trong nội dung bài viết, đôi khi tên bảng được viết dưới dạng tiếng Việt, ví dụ:

- Customers: Khách hàng
- Orders: Đơn hàng
- Employees: Nhân viên
- Shipers: Giao hàng
- Invoices: Hoá đơn

Ví dụ về SQL UNION

Câu lệnh SQL sau trả về các thành phố (chỉ các giá trị khác biệt) từ cả bảng “Khách hàng” và “Nhà cung cấp”:

Lưu ý: Nếu một số khách hàng hoặc nhà cung cấp có cùng thành phố, mỗi thành phố sẽ chỉ được liệt kê một lần vì UNION chỉ chọn các giá trị riêng biệt. Hãy sử dụng UNION ALL để chọn các giá trị trùng lặp!

Lưu ý: ORDER BY ở ví dụ trên sẽ sắp xếp kết quả của cả hai select. Nếu bạn muốn từng SELECT có sự sắp xếp riêng biệt hãy sử dụng đóng mở ngoặc () cho từng select và viết ORDER BY cho từng select.

Ví dụ về SQL UNION ALL

Câu lệnh SQL sau trả về các thành phố (cũng có giá trị trùng lặp) từ cả bảng “Khách hàng” và “Nhà cung cấp”:

Như bạn thấy một số thành phố như Berlin đã xuất hiện nhiều hơn 1 lần.

UNION SQL với WHERE

Câu lệnh SQL sau trả về các thành phố của Đức (chỉ các giá trị khác biệt) từ cả bảng “Khách hàng” và “Nhà cung cấp”:

WHERE được áp dụng cho từng lệnh SELECT, hoàn toàn khác với ORDER BY ở trên.

W3School

Leave a comment

Your email address will not be published. Required fields are marked *