SQLite外連線(Outer Join)


在SQL標準中,有三種型別的外連線:

  • 左外連線
  • 右外連線
  • 全外連線

但是,SQLite僅支援左外連線

SQlite的左外連線

SQLite左外連線用於從ON條件中指定的左側表中獲取所有行,並且僅右表中滿足連線條件的那些行記錄。

語法:

SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression

或者:

SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,......

左外連線如下圖所表示,藍色陰影部分為左外連線的交集 -

範例

假設有兩個表:departmentstudent

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>

註:這些資料用於後續學習連線相關操作使用,如果您還沒有沒有建立或插入上面資料,可參考:/18/148/4331.html ,自行完成操作。

範例:

查詢每個學生所在的部門,並按照以下條件進行左外連線,如下查詢語句 -

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

執行上面查詢,得到以下結果 -

註:沒有指定部門的學生也會查詢出來。因為左連線是基於左表,不管右表條件是否滿足。