Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite UNION
toán tử để kết hợp các tập kết quả của hai hoặc nhiều truy vấn thành một tập kết quả duy nhất.
Giới thiệu về SQLite UNION
toán tử
Đôi khi, bạn cần kết hợp dữ liệu từ nhiều bảng thành một tập kết quả hoàn chỉnh. Nó có thể dành cho các bảng có dữ liệu tương tự trong cùng một cơ sở dữ liệu hoặc có thể bạn cần kết hợp dữ liệu tương tự từ nhiều cơ sở dữ liệu.
Để kết hợp các hàng từ hai truy vấn trở lên thành một tập kết quả duy nhất, bạn sử dụng SQLite UNION
nhà điều hành. Phần sau minh họa cú pháp cơ bản của UNION
nhà điều hành:
query_1
UNION [ALL]
query_2
UNION [ALL]
query_3
...;
Code language: SQL (Structured Query Language) (sql)
Cả UNION
và UNION ALL
toán tử kết hợp các hàng từ tập kết quả thành một tập kết quả duy nhất. UNION
toán tử loại bỏ loại bỏ các hàng trùng lặp, trong khi UNION ALL
nhà điều hành không.
Bởi vì UNION ALL
toán tử không xóa các hàng trùng lặp, nó chạy nhanh hơn UNION
nhà điều hành.
Sau đây là các quy tắc để kết hợp dữ liệu:
- Số lượng cột trong tất cả các truy vấn phải giống nhau.
- Các cột tương ứng phải có kiểu dữ liệu tương thích.
- Tên cột của truy vấn đầu tiên xác định tên cột của tập kết quả được kết hợp.
-
GROUP BY
vàHAVING
các mệnh đề được áp dụng cho từng truy vấn riêng lẻ, không phải tập kết quả cuối cùng. -
ORDER BY
mệnh đề được áp dụng cho tập kết quả tổng hợp, không phải trong tập kết quả riêng lẻ.
Lưu ý rằng sự khác biệt giữa UNION
và JOIN
ví dụ:INNER JOIN
hoặc LEFT JOIN
đó có phải là JOIN
không mệnh đề kết hợp cột từ nhiều bảng có liên quan, trong khi UNION
kết hợp hàng từ nhiều bảng tương tự.
Giả sử chúng ta có hai bảng t1 và t2 với cấu trúc như sau:
CREATE TABLE t1(
v1 INT
);
INSERT INTO t1(v1)
VALUES(1),(2),(3);
CREATE TABLE t2(
v2 INT
);
INSERT INTO t2(v2)
VALUES(2),(3),(4);
Code language: SQL (Structured Query Language) (sql)
Câu lệnh sau kết hợp các tập kết quả của bảng t1 và t2 bằng cách sử dụng UNION
nhà điều hành:
SELECT v1
FROM t1
UNION
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Đây là kết quả:
Hình ảnh sau minh họa UNION
hoạt động của bảng t1 và t2:
Câu lệnh sau kết hợp các tập kết quả của bảng t1 và t2 bằng cách sử dụng UNION ALL
nhà điều hành:
SELECT v1
FROM t1
UNION ALL
SELECT v2
FROM t2;
Code language: SQL (Structured Query Language) (sql)
Hình ảnh sau đây cho thấy kết quả đầu ra:
Hình ảnh sau minh họa UNION ALL
hoạt động của bộ kết quả của bảng t1 và t2:
SQLite UNION
ví dụ
Hãy lấy một số ví dụ về việc sử dụng UNION
nhà điều hành.
1) SQLite UNION
ví dụ
Câu lệnh này sử dụng UNION
toán tử để kết hợp tên của nhân viên và khách hàng thành một danh sách duy nhất:
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers;
Code language: SQL (Structured Query Language) (sql)
Đây là kết quả:
2) SQLite UNION
với ORDER BY
ví dụ
Ví dụ này sử dụng UNION
toán tử để kết hợp tên của nhân viên và khách hàng thành một danh sách duy nhất. Ngoài ra, nó sử dụng ORDER BY
mệnh đề sắp xếp danh sách tên theo họ và tên.
SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers
ORDER BY FirstName, LastName;
Code language: SQL (Structured Query Language) (sql)
Đây là kết quả:
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite UNION
toán tử để kết hợp các hàng từ tập kết quả thành một tập kết quả duy nhất. Bạn cũng đã biết được sự khác biệt giữa UNION
và UNION ALL
toán tử.