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 BYvàHAVINGcá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 BYmệ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ử.