- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Cơ bản về SQL
- Học SQL cơ bản và nâng cao
- SQL là gì
- Các khái niệm RDBMS trong SQL
- RDBMS Database trong SQL
- Cú pháp SQL cơ bản
- Kiểu dữ liệu trong SQL
- Toán tử trong SQL
- Biểu thức trong SQL
- SQL Database
- Lệnh CREATE DATABASE trong SQL
- Lệnh DROP Database trong SQL
- Lệnh SELECT DATABASE trong SQL
- Lệnh RENAME DATABASE trong SQL
- SQL Table
- CREATE Table trong SQL - Tạo bảng trong SQL
- Lệnh DROP Table trong SQL
- DELETE trong SQL
- Lệnh RENAME Table trong SQL
- Lệnh TRUNCATE TABLE trong SQL
- Lệnh ALTER TABLE trong SQL
- Mô phỏng bảng trong SQL
- Bảng tạm (Temporary Table) trong SQL
- Nhóm lệnh thao tác cơ bản
- UPDATE trong SQL
- Truy vấn INSERT trong SQL
- Truy vấn SELECT trong SQL
- Mệnh đề ORDER BY trong SQL
- Mệnh đề GROUP BY trong SQL
- Từ khóa DISTINCT trong SQL
- Sắp xếp kết quả trong SQL
- Mệnh đề trong SQL
- Mệnh đề WHERE trong SQL
- Toán tử liên hợp AND và OR trong SQL
- Mệnh đề With trong SQL
- Mệnh đề LIKE trong SQL
- Mệnh đề TOP, LIMIT, ROWNUM trong SQL
- Hoạt động SQL nâng cao
- Mệnh đề UNION trong SQL
- Giá trị NULL trong SQL
- Alias trong SQL
- Chỉ mục (Index) trong SQL
- Sử dụng View trong SQL
- Mệnh đề HAVING trong SQL
- Transaction trong SQL
- Toán tử wildcard trong SQL
- Truy vấn con trong SQL
- Sử dụng Sequence trong SQL
- Xử lý bản sao trong SQL (DISTINCT)
- Injection trong SQL
- Ràng buộc trong SQL
- Ràng buộc (Constraint) trong SQL
- Ràng buộc NOT NULL trong SQL
- Ràng buộc DEFAULT trong SQL
- Ràng buộc UNIQUE trong SQL
- Ràng buộc PRIMARY KEY trong SQL
- Ràng buộc FOREIGN KEY trong SQL
- Ràng buộc CHECK trong SQL
- Ràng buộc INDEX trong SQL
- SQL Join
- Mệnh đề JOINS trong SQL
- INNER JOIN trong SQL
- LEFT JOIN trong SQL
- RIGHT JOIN trong SQL
- FULL JOIN trong SQL
- SELF JOIN trong SQL
- CARTESIAN JOIN hoặc CROSS JOIN trong SQL
- Hàm trong SQL
- Hàm hữu ích trong SQL
- Hàm xử lý Date và Time trong SQL
- Hàm xử lý số trong SQL
- Hàm xử lý chuỗi trong SQL
- Tài liệu SQL tham khảo
- First Normal Form (1NF) trong SQL
- Second Normal Form (2NF) trong SQL
- Third Normal Form (3NF) trong SQL
- Tuning DB trong SQL
- Tài liệu SQL tham khảo
Mệnh đề/Toán tử UNION trong SQL được sử dụng để kết hợp kết quả của hai hoặc nhiều lệnh SELECT mà không trả về bất cứ bản sao nào của bản ghi.
UNION trong MySQL được sử dụng để kết hợp kết quả của hai hoặc nhiều câu lệnh SELECT vào một tập kết quả duy nhất. Các kết quả của mỗi câu lệnh SELECT được hợp lại và các bản ghi trùng lặp sẽ bị loại bỏ trừ khi bạn sử dụng UNION ALL, trong trường hợp đó tất cả các bản ghi sẽ được giữ lại.
Để sử dụng UNION, mỗi lệnh SELECT phải có cùng số cột đã chọn, cùng số biểu thức của các cột, cùng kiểu dữ liệu, và chúng có cùng thứ tự, nhưng chúng không cần phải có cùng độ dài.
Cú pháp
Cú pháp cơ bản của mệnh đề UNION trong SQL như sau:
SELECT cot1 [, cot2 ] FROM bang1 [, bang2 ] [WHERE dieu_kien] UNION SELECT cot1 [, cot2 ] FROM bang1 [, bang2 ] [WHERE dieu_kien]
Tại đây, dieu_kien đã cho có thể là bất kỳ biểu thức nào dựa theo yêu cầu của bạn.
Ví dụ
Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4000000 | | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+---------+-----+-----------+---------+
Bảng MUONSACH có các bản ghi sau:
+-----+---------------------+-------------+--------+ |STT | NGAY | SINHVIEN_ID | SOTIEN | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 320 | | 100 | 2009-10-08 00:00:00 | 3 | 250 | | 101 | 2009-11-20 00:00:00 | 2 | 280 | | 103 | 2008-05-20 00:00:00 | 4 | 290 | +-----+---------------------+-------------+--------+
Bây giờ, kết hợp hai bảng này trong lệnh SELECT như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN LEFT JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID UNION SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN RIGHT JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID;
Ví dụ trên sẽ cho kết quả:
+------+----------+--------+---------------------+ | ID | TEN | SOTIEN | NGAY | +------+----------+--------+---------------------+ | 1 | Hoang | NULL | NULL | | 2 | Viet | 280 | 2009-11-20 00:00:00 | | 3 | Thanh | 320 | 2009-10-08 00:00:00 | | 3 | Thanh | 250 | 2009-10-08 00:00:00 | | 4 | Nhan | 290 | 2008-05-20 00:00:00 | | 5 | Huong | NULL | NULL | +------+----------+--------+---------------------+
Các trường hợp sử dụng UNION
-
Kết hợp dữ liệu từ nhiều bảng:
- Khi bạn có dữ liệu liên quan nhưng được lưu trữ trong các bảng khác nhau, UNION giúp bạn kết hợp chúng lại thành một tập kết quả duy nhất.
SELECT name, email FROM employees UNION SELECT name, email FROM customers;
-
Tạo báo cáo từ nhiều nguồn dữ liệu:
- UNION có thể được sử dụng để tạo các báo cáo tổng hợp từ nhiều bảng, giúp bạn có cái nhìn tổng quan về dữ liệu.
-
Thực hiện các truy vấn phức tạp:
- Bạn có thể sử dụng UNION để thực hiện các truy vấn phức tạp, kết hợp kết quả của nhiều truy vấn con thành một tập kết quả duy nhất.
SELECT product_name, product_price FROM electronics UNION SELECT product_name, product_price FROM furniture;
-
Kết hợp các tập kết quả từ các điều kiện khác nhau:
- Khi bạn cần lấy dữ liệu từ cùng một bảng nhưng dựa trên các điều kiện khác nhau, UNION có thể giúp kết hợp các kết quả này.
SELECT id, name FROM employees WHERE department = 'Sales' UNION SELECT id, name FROM employees WHERE department = 'HR';
-
Tối ưu hóa truy vấn:
- Trong một số trường hợp, việc sử dụng UNION có thể giúp tối ưu hóa truy vấn bằng cách chia nhỏ các truy vấn phức tạp thành các truy vấn đơn giản hơn và sau đó kết hợp kết quả.
Lưu ý khi sử dụng UNION
- Các câu lệnh SELECT trong một UNION phải có cùng số lượng cột và các cột tương ứng phải có các kiểu dữ liệu tương thích.
- UNION loại bỏ các bản ghi trùng lặp theo mặc định. Sử dụng UNION ALL nếu bạn muốn giữ lại tất cả các bản ghi.
- ORDER BY chỉ có thể được sử dụng một lần và nó phải được đặt ở cuối câu lệnh UNION.
Ví dụ:
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name;
Kết luận
UNION là một công cụ mạnh mẽ trong MySQL để kết hợp các tập kết quả từ nhiều truy vấn SELECT thành một tập kết quả duy nhất, hỗ trợ trong việc xử lý và phân tích dữ liệu từ nhiều nguồn khác nhau.
Mệnh đề UNION ALL trong SQL
Toán tử UNION ALL được sử dụng để kết hợp nhiều kết quả của hai lệnh SELECT bao gồm cả các bản sao của các hàng.
Các qui tắc áp dụng cho UNION cũng áp dụng cho toán tử UNION ALL.
Cú pháp
Cú pháp cơ bản của UNION ALL là như sau:
SELECT cot1 [, cot2 ] FROM bang1 [, bang2 ] [WHERE dieu_kien] UNION ALL SELECT cot1 [, cot2 ] FROM bang1 [, bang2 ] [WHERE dieu_kien]
Ở đây, dieu_kien đã cho có thể là bất kỳ biểu thức đã cung cấp nào dựa theo yêu cầu của bạn.
Ví dụ
Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:
+----+---------+-----+-----------+--------+ | ID | TEN | TUOI| KHOAHOC | HOCPHI | +----+---------+-----+-----------+---------+ | 1 | Hoang | 21 | CNTT | 4000000 | | 2 | Viet | 19 | DTVT | 3000000 | | 3 | Thanh | 18 | KTDN | 4000000 | | 4 | Nhan | 19 | CK | 4500000 | | 5 | Huong | 20 | TCNH | 5000000 | +----+---------+-----+-----------+---------+
Bảng MUONSACH có các bản ghi sau:
+-----+---------------------+-------------+--------+ |STT | NGAY | SINHVIEN_ID | SOTIEN | +-----+---------------------+-------------+--------+ | 102 | 2009-10-08 00:00:00 | 3 | 320 | | 100 | 2009-10-08 00:00:00 | 3 | 250 | | 101 | 2009-11-20 00:00:00 | 2 | 280 | | 103 | 2008-05-20 00:00:00 | 4 | 290 | +-----+---------------------+-------------+--------+
Bây giờ, kết hợp hai bảng trên trong lệnh SELECT như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN LEFT JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID UNION ALL SELECT ID, TEN, SOTIEN, NGAY FROM SINHVIEN RIGHT JOIN MUONSACH ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID;
Ví dụ trên sẽ cho kết quả:
+------+----------+--------+---------------------+ | ID | TEN | SOTIEN | NGAY | +------+----------+--------+---------------------+ | 1 | Hoang | NULL | NULL | | 2 | Viet | 280 | 2009-11-20 00:00:00 | | 3 | Thanh | 320 | 2009-10-08 00:00:00 | | 3 | Thanh | 250 | 2009-10-08 00:00:00 | | 4 | Nhan | 290 | 2008-05-20 00:00:00 | | 5 | Huong | NULL | NULL | | 3 | Thanh | 320 | 2009-10-08 00:00:00 | | 3 | Thanh | 250 | 2009-10-08 00:00:00 | | 2 | Viet | 280 | 2009-11-20 00:00:00 | | 4 | Nhan | 290 | 2008-05-20 00:00:00 | +------+----------+--------+---------------------+
Ngoài ra, có hai mệnh đề khác (hoặc toán tử) mà khá tương tự như mệnh đề UNION, bạn truy cập link để tìm hiểu chúng:
-
Mệnh đề INTERSECT trong SQL: được sử dụng để kết hợp hai lệnh SELECT, nhưng trả về các hàng chỉ từ lệnh SELECT đầu tiên mà là đồng nhất với một hàn trong lệnh SELECT thứ hai.
-
Mệnh đề EXCEPT trong SQL : kết hợp hai lệnh SELECT và trả về các hàng từ lệnh SELECT đầu tiên mà không được trả về bởi lệnh SELECT thứ hai.
Bình luận (0)