Giới thiệu về MySQL UNION
MySQL UNION là một phép toán trong ngôn ngữ truy vấn SQL cho phép kết hợp kết quả từ hai hoặc nhiều câu lệnh SELECT thành một tập hợp kết quả duy nhất. Điều này hữu ích khi bạn muốn lấy dữ liệu từ các bảng khác nhau hoặc từ các truy vấn khác nhau mà có cùng cấu trúc (số lượng và kiểu dữ liệu của các cột phải tương thích).
Cú pháp của MySQL UNION
SELECT cột1, cột2, ... FROM bảng1 WHERE điều_kiện UNION SELECT cột1, cột2, ... FROM bảng2 WHERE điều_kiện;
Lưu ý rằng:
- Các cột trong các câu lệnh SELECT phải có cùng số lượng và kiểu dữ liệu tương tự.
- Kết quả từ UNION sẽ loại bỏ các bản sao trùng lặp. Nếu bạn muốn giữ lại các bản sao, bạn có thể sử dụng UNION ALL.
Ví dụ về MySQL UNION
Ví dụ 1: Kết hợp dữ liệu từ hai bảng
Giả sử chúng ta có hai bảng: KhachHang và NhaCungCap.
Bảng KhachHang: | ID | Ten | ThanhPho | |----|---------|------------| | 1 | An | Ha Noi | | 2 | Binh | Ho Chi Minh | | 3 | Chi | Da Nang | Bảng NhaCungCap: | ID | Ten | ThanhPho | |----|---------|------------| | 1 | Duy | Ha Noi | | 2 | Hoa | Da Nang | | 3 | Lam | Ha Noi | Truy vấn: SELECT Ten, ThanhPho FROM KhachHang UNION SELECT Ten, ThanhPho FROM NhaCungCap;
Kết quả sẽ là:
| Ten | ThanhPho | |-------|------------| | An | Ha Noi | | Binh | Ho Chi Minh | | Chi | Da Nang | | Duy | Ha Noi | | Hoa | Da Nang | | Lam | Ha Noi |
Ví dụ 2: Sử dụng UNION ALL
Để giữ lại các bản sao, bạn có thể sử dụng UNION ALL. Giả sử bảng KhuVuc lưu trữ thông tin khu vực.
Bảng KhuVuc: | ID | Ten | ThanhPho | |----|---------|------------| | 1 | MienBac| Ha Noi | | 2 | MienTrung| Da Nang | Truy vấn: SELECT Ten, ThanhPho FROM KhachHang UNION ALL SELECT Ten, ThanhPho FROM NhaCungCap;
Kết quả sẽ bao gồm tất cả các bản ghi, kể cả bản sao:
| Ten | ThanhPho | |-------|------------| | An | Ha Noi | | Binh | Ho Chi Minh | | Chi | Da Nang | | Duy | Ha Noi | | Hoa | Da Nang | | Lam | Ha Noi |
Kết luận
MySQL UNION là một công cụ mạnh mẽ cho việc kết hợp dữ liệu từ nhiều nguồn. Việc nắm vững cách sử dụng UNION và UNION ALL sẽ giúp bạn dễ dàng hơn trong việc truy xuất và phân tích dữ liệu trong cơ sở dữ liệu của mình.