SQLite外连接(Outer Join)

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>

注:这些数据用于后续学习连接相关操作使用,如果您还没有没有创建或插入上面数据,可参考:http://www.zyiz.net/sqlite/insert-query.html ,自行完成操作。

示例:

查询每个学生所在的部门,并按照以下条件进行左外连接,如下查询语句 -

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

执行上面查询,得到以下结果 -

注:没有指定部门的学生也会查询出来。因为左连接是基于左表,不管右表条件是否满足。


目录

SQLite主键