Mệnh đề UNION trong SQLite



Mệnh đề/Toán tử UNION trong SQLite đượ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.

Để sử dụng UNION, mỗi lệnh SELECT phải có cùng số column đã 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 UNION trong SQLite như sau:

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

Ở đây, condition đã 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ụ

Bạn theo dõi hai bảng sau, một là bảng COMPANY:

sqlite> select * from COMPANY;
ID          NAME                  AGE         ADDRESS     SALARY
----------  --------------------  ----------  ----------  ----------
1           Paul                  32          California  20000.0
2           Allen                 25          Texas       15000.0
3           Teddy                 23          Norway      20000.0
4           Mark                  25          Rich-Mond   65000.0
5           David                 27          Texas       85000.0
6           Kim                   22          South-Hall  45000.0
7           James                 24          Houston     10000.0

Bảng DEPARTMENT như sau:

ID          DEPT                  EMP_ID
----------  --------------------  ----------
1           IT Billing            1
2           Engineering           2
3           Finance               7
4           Engineering           3
5           Finance               4
6           Engineering           5
7           Finance               6

Bây giờ, kết hợp hai bảng này trong lệnh SELECT cùng với mệnh đề UNION như sau:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
        ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION
     SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
        ON COMPANY.ID = DEPARTMENT.EMP_ID;

Ví dụ trên sẽ cho kết quả:

EMP_ID      NAME                  DEPT
----------  --------------------  ----------
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance

Mệnh đề UNION ALL trong SQLite

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 column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]UNION ALLSELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Ở đây, condition đã 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ụ

Bây giờ, kết hợp hai bảng ở trên trong lệnh SELECT với mệnh đề UNION ALL như sau:

sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
        ON COMPANY.ID = DEPARTMENT.EMP_ID
   UNION ALL
     SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
        ON COMPANY.ID = DEPARTMENT.EMP_ID;

Ví dụ trên sẽ cho kết quả:

EMP_ID      NAME                  DEPT
----------  --------------------  ----------
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance

Các bài học SQLite phổ biến khác tại VietJack: