VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

SQL cơ bản

SQL là gì? SQL - RDBMS là gì? SQL - Các hệ quản trị CSDL SQL - Cú pháp SQL - Kiểu dữ liệu SQL - Toán tử SQL - Biểu thức SQL - Create Database SQL - Drop Database SQL - Select Database SQL - Create Table SQL - Drop Table SQL - Câu lệnh Insert SQL - Câu lệnh Select SQL - Mệnh đề Where SQL - Toán tử AND & OR SQL - Câu lệnh Update SQL - Câu lệnh Delete SQL - Mệnh đề Like SQL - Mệnh đề Top SQL - Mệnh đề Order By SQL - Mệnh đề Group By SQL - Từ khóa Distinct

SQL nâng cao

SQL - Các ràng buộc SQL - Mệnh đề JOIN SQL - INNER JOIN SQL - RIGHT JOIN SQL - LEFT JOIN SQL - FULL JOIN SQL - SELF JOIN SQL - Mệnh đề UNION SQL - Giá trị NULL SQL - Sử dụng Alias SQL - Sử dụng Index SQL - Lệnh Alter SQL - Lệnh Truncate Table SQL - Sử dụng View SQL - Mệnh đề Having SQL - Transaction SQL - Ký tự đại diện SQL - Các hàm xử lý Date SQL - Bảng tạm thời SQL - Clone Table SQL - Sub Querie SQL - Sequence SQL - Xử lý Duplicate
1 / 3
❮ ❯

Mệnh đề UNION trong SQL


Mệnh đề JOIN trong SQL
Giá trị NULL trong SQL

Mệnh đề UNION trong SQL được sử dụng để kết hợp các kết quả của hai hoặc nhiều câu lệnh SELECT mà không cần trả về bất kỳ hàng trùng lặp nào.

Để sử dụng mệnh đề UNION này, mỗi câu lệnh SELECT cần phải có

  • Cùng một số cột được chọn
  • Cùng một số biểu thức cột
  • Cùng kiểu dữ liệu
  • Có chúng trong cùng một trật tự

Nhưng chúng không cần phải có cùng chiều dài.


Nội dung chính

  • Cú pháp
  • Ví dụ
  • Mệnh đề UNION ALL
    • Cú pháp
    • Ví dụ

Cú pháp

Cú pháp cơ bản của mệnh đề UNION trong SQL như sau:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]UNIONSELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Ở đây, điều kiện nhất định có thể là bất kỳ biểu hiện nào dựa trên yêu cầu của bạn.

Ví dụ

Xem xét hai bảng sau.

Bảng 1 - CUSTOMERS Bảng dưới đây.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ha Anh   |  32 | Da Nang   |  2000.00 |
|  2 | Van Ha   |  25 | Ha Noi    |  1500.00 |
|  3 | Vu Bang  |  23 | Vinh      |  2000.00 |
|  4 | Thu Minh |  25 | Ha Noi    |  6500.00 |
|  5 | Hai An   |  27 | Ha Noi    |  8500.00 |
|  6 | Hoang    |  22 | Ha Noi    |  4500.00 |
|  7 | Binh     |  24 | Ha Noi    | 10000.00 |
+----+----------+-----+-----------+----------+

Bảng 2 - Bảng ORDERS như sau.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Bây giờ, chúng ta hãy join hai bảng trong câu lệnh SELECT của chúng ta như sau:

SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Điều này sẽ tạo ra kết quả sau:

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ha Anh   |   NULL | NULL                |
|    2 | Van Ha   |   1560 | 2009-11-20 00:00:00 |
|    3 | Vu Bang  |   3000 | 2009-10-08 00:00:00 |
|    3 | Vu Bang  |   1500 | 2009-10-08 00:00:00 |
|    4 | Thu Minh |   2060 | 2008-05-20 00:00:00 |
|    5 | Hai An   |   NULL | NULL                |
|    6 | Hoang    |   NULL | NULL                |
|    7 | Binh     |   NULL | NULL                |
+------+----------+--------+---------------------+

Mệnh đề UNION ALL

Toán tử UNION ALL được sử dụng để kết hợp các kết quả của hai câu lệnh SELECT bao gồm cả các hàng trùng lặp.

Các quy tắc tương tự áp dụng cho mệnh đề UNION sẽ áp dụng cho toán tử UNION ALL.

Cú pháp

Cú pháp cơ bản của UNION ALL như sau.

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]UNION ALLSELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Ở đây, điều kiện có thể là bất kỳ dựa trên yêu cầu của bạn.

Ví dụ

Giả sử ta có hai bảng sau:

Bảng 1 - Bảng CUSTOMERS.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ha Anh   |  32 | Da Nang   |  2000.00 |
|  2 | Van Ha   |  25 | Ha Noi    |  1500.00 |
|  3 | Vu Bang  |  23 | Vinh      |  2000.00 |
|  4 | Thu Minh |  25 | Ha Noi    |  6500.00 |
|  5 | Hai An   |  27 | Ha Noi    |  8500.00 |
|  6 | Hoang    |  22 | Ha Noi    |  4500.00 |
|  7 | Binh     |  24 | Ha Noi    | 10000.00 |
+----+----------+-----+-----------+----------+

Bảng 2 - Bảng ORDERS.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Bây giờ, chúng ta hãy join hai bảng trong câu lệnh SELECT của chúng ta như sau:

SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION ALL
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Điều này sẽ tạo ra kết quả sau:

+------+----------+--------+---------------------+
| ID   | NAME     | AMOUNT | DATE                |
+------+----------+--------+---------------------+
|    1 | Ha Anh   |   NULL | NULL                |
|    2 | Van Ha   |   1560 | 2009-11-20 00:00:00 |
|    3 | Vu Bang  |   3000 | 2009-10-08 00:00:00 |
|    3 | Vu Bang  |   1500 | 2009-10-08 00:00:00 |
|    4 | Thu Minh |   2060 | 2008-05-20 00:00:00 |
|    5 | Hai An   |   NULL | NULL                |
|    6 | Hoang    |   NULL | NULL                |
|    7 | Binh     |   NULL | NULL                |
|    3 | Vu Bang  |   3000 | 2009-10-08 00:00:00 |
|    3 | Vu Bang  |   1500 | 2009-10-08 00:00:00 |
|    2 | Van Ha   |   1560 | 2009-11-20 00:00:00 |
|    4 | Thu Minh |   2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+

Có hai mệnh đề khác (tức là các toán tử), giống như mệnh đề UNION.

  • Mệnh đề INTERSECT trong SQL - Mệnh đề này được sử dụng để kết hợp hai câu lệnh SELECT, nhưng trả về các hàng chỉ từ câu lệnh SELECT đầu tiên giống với một dòng trong câu lệnh SELECT thứ hai.
  • SQL Mệnh đề EXCEPT trong SQL - Mệnh đề này kết hợp hai câu lệnh SELECT và trả về các hàng từ câu lệnh SELECT đầu tiên không được trả về bởi câu lệnh SELECT thứ hai.
Bài tiếp theo: Giá trị NULL trong SQL

Mệnh đề JOIN trong SQL
Giá trị NULL trong SQL

Recent Updates

Xử lý duplicate trong SQLWeb SQL Database trong HTML5Lệnh DELETE MySQL trong PythonLệnh UPDATE MySQL trong PythonLệnh SELECT MySQL trong PythonLệnh INSERT MySQL trong PythonTạo bảng MySQL trong PythonTạo new database MySQL trong PythonKết nối Python với MySQLCài đặt môi trường MySQL cho PythonVí dụ Hibernate 3 XML Mapping - SQLServer 2017Ví dụ Hibernate 4 Annotation Mapping - MySQLSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml