Trong quá trình làm việc với cơ sở dữ liệu MySQL, có những lúc bạn sẽ cần kết hợp dữ liệu từ nhiều truy vấn khác nhau để tạo ra một tập hợp kết quả duy nhất. Lệnh UNION trong MySQL là một công cụ mạnh mẽ cho phép thực hiện việc này một cách hiệu quả.
Lệnh UNION là gì?
Lệnh UNION được sử dụng để kết hợp kết quả của hai hoặc nhiều truy vấn SELECT thành một kết quả duy nhất. Kết quả trả về từ các truy vấn được gộp lại và các bản ghi trùng lặp sẽ bị loại bỏ một cách tự động.
Cú pháp cơ bản của lệnh UNION
Cú pháp cơ bản của lệnh UNION như sau:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
Trong đó:
SELECT column1, column2 FROM table1
: Đây là truy vấn SELECT đầu tiên.UNION
: Kết hợp kết quả của truy vấn đầu tiên và truy vấn thứ hai.SELECT column1, column2 FROM table2
: Đây là truy vấn SELECT thứ hai.
Lưu ý rằng số lượng cột trong các truy vấn phải bằng nhau và các cột này phải có kiểu dữ liệu tương thích với nhau.
UNION vs. UNION ALL
Mặc định, lệnh UNION tự động loại bỏ các bản ghi trùng lặp từ kết quả. Tuy nhiên, nếu bạn muốn giữ lại tất cả các bản ghi bao gồm cả những bản ghi trùng lặp, bạn có thể sử dụng lệnh UNION ALL.
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
Ví dụ thực tế
Để giúp minh họa rõ ràng hơn, hãy xem xét một ví dụ cụ thể. Giả sử chúng ta có hai bảng employees_vietnam
và employees_foreign
và chúng ta muốn kết hợp danh sách nhân viên từ hai bảng này.
SELECT name, position FROM employees_vietnam
UNION
SELECT name, position FROM employees_foreign;
Ví dụ này sẽ trả về một danh sách các nhân viên từ cả hai bảng, nhưng các bản ghi trùng lặp sẽ được loại bỏ. Nếu chúng ta sử dụng UNION ALL, nó sẽ trả về tất cả nhân viên kể cả những bản ghi trùng lặp.
SELECT name, position FROM employees_vietnam
UNION ALL
SELECT name, position FROM employees_foreign;
Sử dụng điều kiện trong các mệnh đề SELECT
Bạn có thể áp dụng điều kiện trong các truy vấn SELECT trước khi sử dụng UNION. Ví dụ, nếu bạn chỉ muốn kết hợp danh sách các nhân viên ở một vị trí cụ thể, bạn có thể sử dụng mệnh đề WHERE.
SELECT name, position FROM employees_vietnam WHERE position = 'Manager'
UNION
SELECT name, position FROM employees_foreign WHERE position = 'Manager';
Lưu ý khi sử dụng lệnh UNION
- Số lượng cột và kiểu dữ liệu: Các truy vấn được kết hợp phải có cùng số lượng cột và các cột đó phải có kiểu dữ liệu tương tự.
- Thứ tự cột: Thứ tự các cột trong các truy vấn SELECT phải giống nhau.
- Hiệu năng: Lệnh UNION có thể tốn kém về mặt hiệu năng nếu các bảng dữ liệu lớn. Sử dụng UNION ALL có thể cải thiện hiệu năng vì nó không loại bỏ các bản ghi trùng lặp.
Kết luận
Việc kết hợp kết quả truy vấn bằng lệnh UNION trong MySQL mang lại nhiều lợi ích, giúp bạn dễ dàng và hiệu quả hơn trong việc quản lý và phân tích dữ liệu từ nhiều nguồn khác nhau. Tuy nhiên, bạn cần lưu ý về số lượng cột, kiểu dữ liệu và hiệu năng khi sử dụng lệnh này. Hy vọng bài viết này đã cung cấp đủ thông tin để bạn có thể áp dụng UNION một cách hiệu quả trong công việc của mình.
Comments