Khi bạn đang truy vấn một cơ sở dữ liệu, bạn có thể muốn kết hợp kết quả của hai hoặc nhiều SELECT
các câu lệnh. Ví dụ:bạn có thể muốn lấy danh sách các thành phố mà khách hàng của bạn đặt trụ sở và các thành phố mà doanh nghiệp của bạn có chi nhánh. Bạn có thể chạy hai truy vấn để đạt được mục tiêu này, nhưng bạn có thể muốn có một kết quả trong một truy vấn.
Đó là nơi mà SQL UNION
toán tử tham gia. UNION
mệnh đề có thể được sử dụng để kết hợp các kết quả của hai hoặc nhiều SELECT
truy vấn vào một tập kết quả duy nhất.
Trong hướng dẫn này, chúng ta sẽ phân tích những điều cơ bản về SQL UNION
và thảo luận về nơi bạn có thể muốn sử dụng lệnh này khi bạn đang làm việc với cơ sở dữ liệu.
Trình làm mới truy vấn
Người lập trình sử dụng truy vấn để lấy thông tin từ cơ sở dữ liệu. Các truy vấn hầu như luôn bắt đầu bằng SQL SELECT
và được sử dụng để truy xuất dữ liệu dựa trên một tập hợp các tiêu chí. Các truy vấn thường bao gồm FROM
toán tử, cho biết bảng nào sẽ được truy vấn, trong số các toán tử khác có thể lọc dữ liệu kết quả.
Đây là cú pháp chung cho SQL
truy vấn:
SELECT column_name FROM table_name WHERE your_condititions_are_met;
Đây là một ví dụ về SQL
truy vấn trả về danh sách tất cả tên nhân viên:
SELECT name FROM employees;
Kết quả từ truy vấn của chúng tôi như sau:
name |
Luke Mike Hannah Geoff Alexis Emma Jonah |
(7 hàng)
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Nếu bạn muốn truy xuất thông tin từ nhiều cột, bạn có thể làm như vậy bằng cách tách tên cột bằng dấu phẩy. Nếu bạn muốn lấy dữ liệu từ mọi cột, bạn có thể sử dụng dấu hoa thị (*
) thay vào đó, đại diện cho mọi cột trong bảng.
SQL Union
SQL UNION
toán tử có thể được sử dụng để kết hợp các kết quả của hai hoặc nhiều truy vấn thành một phản hồi duy nhất dẫn đến một bảng.
Để sử dụng UNION
, hai điều kiện phải được đáp ứng. Thứ nhất, kiểu dữ liệu của các cột mới phải tương thích — nếu lương là một số nguyên trong một bảng và một float trong bảng kia, thì liên minh sẽ không hoạt động. Thứ hai, số lượng và thứ tự của các cột phải giống nhau trong các truy vấn của bạn.
Đây là cú pháp cho SQL UNION
truy vấn:
SELECT column_name FROM table1_name UNION SELECT column_name FROM table2_name;
Hãy sử dụng một ví dụ để minh họa cách sử dụng SQL UNION
nhà điều hành hoạt động. Giả sử chúng tôi là một doanh nghiệp cần gửi thông báo đến tất cả khách hàng của mình. Chúng tôi cũng muốn tất cả nhân viên được gửi thông báo này để họ biết những gì đang diễn ra.
Chúng tôi có thể sử dụng SQL
sau truy vấn để có được danh sách các email của cả khách hàng và nhân viên của chúng tôi để chúng tôi có thể gửi tất cả thông báo cho họ:
SELECT name, email FROM employees UNION SELECT name, email FROM customers;
Đây là kết quả từ truy vấn của chúng tôi:
name | |
Emma | [email protected] |
Jonah | [email protected] |
Hannah | [email protected] |
Luke | [email protected] |
John | [email protected] |
Geoff | [email protected] |
Alexis | [email protected] |
Fred | [email protected] |
Erin | [email protected] |
Katy | [email protected] |
Anne | [email protected] |
Tom | [email protected] |
Mike | [email protected] |
Hannah | [email protected] |
(14 hàng)
Như bạn có thể thấy, UNION
của chúng tôi truy vấn trả về danh sách tất cả tên và địa chỉ email cho cả khách hàng và nhân viên của chúng tôi.
Cần lưu ý rằng UNION
toán tử loại bỏ các hàng trùng lặp khỏi kết quả cuối cùng được kết hợp. Điều này có nghĩa là nếu một trong những nhân viên của chúng tôi cũng là khách hàng, chúng tôi sẽ chỉ xem thông tin của họ một lần.
Trong khi điều này được giải quyết trong ví dụ trên, nếu bạn muốn trả về một kết quả bao gồm các hàng trùng lặp, bạn sẽ cần thêm ALL
từ khóa cho truy vấn của bạn. Đây là một ví dụ:
SELECT name, email FROM employees UNION ALL SELECT name, email FROM customers;
Kết luận
Trong hướng dẫn này, chúng tôi đã chia nhỏ cách sử dụng UNION
toán tử trên SQL
máy chủ. Như chúng ta đã thảo luận, UNION
có thể được sử dụng để lấy dữ liệu từ hai bảng và kết hợp phản hồi thành một bảng duy nhất. Ví dụ:nếu bạn muốn nhận danh sách địa chỉ của nhà cung cấp và nhà phân phối — cả hai đều được lưu trữ trong các bảng riêng biệt — bạn có thể sử dụng UNION
truy vấn.