- Posted on
- Triển Đinh
- Không có bình luận
Trở lại với series chia sẻ kiến thức “SQL cho người mới học”. Bài viết này, Học viện GNV sẽ giới thiệu đến bạn toán tử Union thông dụng và được sử dụng rất nhiều trong thực tế.
Xem thêm: Lịch khai giảng các khóa học SQL tại đây
Toán tử UNION trong SQL được sử dụng để kết hợp kết quả của hai hoặc nhiều câu lệnh SELECT với nhau. Toán tử UNION trong SQL sẽ xóa bỏ các dòng kết quả bị trùng giữa các mệnh đề Select.
Lưu ý: Mỗi mệnh đề Select trong phép Union trong SQL phải có cùng số lượng cột với nhau và giá trị giữa các cột tương ứng phải có cùng kiểu dữ liệu.
Cú pháp sử dụng toán tử UNION trong SQL:
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_1
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
UNION
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_2
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
Ví dụ minh họa toán tử UNION:
Giả sử Table 1 và Table 2, chúng ta sẽ có nhiều cột dữ liệu khác nhau. Nhưng trong ví dụ này chúng ta chỉ muốn lấy hai cột dữ liệu là Column 1 và Column 2 ở Table 1 và Table 2. Vì vậy, cú pháp sẽ như sau:
SELECT [Column 1], [Column 2]
FROM Table_1
UNION
SELECT [Column 1], [Column 2]
FROM Table_1
Các bạn lưu ý số cột chùng ta chọn ở mỗi mệnh đề Select là bằng nhau, và kiểu dữ liệu ở mỗi cột là giống nhau nhé.
Kết quả có 1 dòng [ a | b ] bị trùng đã bị xóa, do lệnh UNION sẽ loại bỏ các dòng bị trùng lặp. Tuy nhiên, nếu bạn muốn kết quả trả lại không bị xóa một dòng dữ liệu nào chúng ta sẽ dùng Toán tử UNION ALL
Toán tử UNION ALL trong SQL Server có cách sử dụng tương tự như UNION, thay vì sử dụng UNION thì chúng ta sẽ thêm ALL sau UNION.
Cú pháp sử dụng toán tử UNION ALL trong SQL:
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_1
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
UNION ALL
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_2
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
Ví dụ minh họa UNION ALL:
Chúng ta sẻ sử dụng lại ví dụ trên, nhưng trong ví dụ này kết quả trả lại sẽ là 6 dòng thay vì 5 dòng khi sử dụng UNION
SELECT [Column 1], [Column 2]
FROM Table_1
UNION ALL
SELECT [Column 1], [Column 2]
FROM Table_1
Các bạn lưu ý khi sử dụng UNION và UNION ALL thì số cột chùng ta chọn ở mỗi mệnh đề Select là bằng nhau, và kiểu dữ liệu ở mỗi cột là giống nhau nhé.
Kết hợp toán tử UNION cùng với các mệnh đề khác
1/ Toán tử UNION và UNION ALL
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_1
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
UNION ALL
(
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_1
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
UNION
SELECT [Column_name_1], [Column_name_2],…,[Column_name_n]
FROM tables_2
WHERE (yêu cầu/ điều kiện truy vấn nếu có)
)
2/ UNION và ORDER BY trong SQL
Sai
Đúng
Lưu ý: Khi kết hợp UNION hay UNION ALL cùng với ORDER BY, chúng ta sẽ dùng mệnh đề ORDER BY ở câu SELECT cuối cùng nhé.
3/ SELECT INTO và UNION trong SQL
Xem bài viết gốc tại đây