SQLite Union All操作符


SQLite UNION ALL運算子用於組合兩個或多個SELECT語句的結果,但是不忽略重複的行(含有重複的行記錄)。

在SQLite UNION ALL中,查詢結果表還包括重複值。 其它規則適用於Union操作符。

語法:

SELECT expression1, expression2, ... expression_n  
FROM tables  
[WHERE conditions]  
UNION ALL  
SELECT expression1, expression2, ... expression_n  
FROM tables  
[WHERE conditions];

假設有兩個表:studentdepartment

sqlite> .tables
department  student
sqlite>

student表中具有以下資料:

sqlite> select * from student;
1|Maxsu|27|Shengzhen|20000.0
2|Minsu|25|Beijing|15000.0
3|Avgsu|23|Shanghai|2000.0
4|Linsu|25|Guangzhou|65000.0
5|Sqlsu|26|Haikou|25000.0
6|Javasu|21|Shengzhen|18000.0
7|Linsu|27|Haikou|10000.0
8|Minsu|23|Guangzhou|5000.0
9|Maxsu|23|Shenzhen|9000.0
sqlite>

department表中具有以下資料:

sqlite> select * from department;
1|財務部|1
2|技術部|2
3|技術部|3
4|市場部|4
5|市場部|5
sqlite>

範例1:

使用union all操作符返回單個欄位,這個簡單範例只返回來自兩個欄位具有相同資料型別的多個SELECT語句中的一個欄位。
下面來看看上面的兩個表:studentdepartment,並在UNION ALL操作符從兩個表中選擇一個id

SELECT ID FROM STUDENT  
UNION ALL   
SELECT ID FROM DEPARTMENT;

執行上面程式碼,得到以下結果 -

範例2:

UNION ALL內部和外部連線,按照以下條件和UNION ALL子句,將上述兩個表:studentdepartment作為內部聯接和外部聯接。

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

執行上面程式碼,得到以下結果 -