Mysql join语句解析


1. 右链接(right join, right outer join)
解释:以右表(Sys_Employee)为准,而左表(Sys_Department)中的记录只有当其DepartmentId在右表中存在时才会查询出来;
 
\
 
2. 左链接(left join, left outer join)
解释:以左表(Sys_Department)为准,而右表(Sys_Employee)中的记录只有当其DepartmentId在左表中存在时才会查询出来;
 
\
 
3. 全链接(full join, full outer join)
解释:两个表中DepartmentId的并集(U)记录;
 
\
 
4. 内链接(join, inner join)
解释:两个表中DepartmentId的交集(n)记录;
 
\
 
5. 交叉链接(cross join,彻底链接)
解释:没有WHERE子句的交叉链接,它返回被链接的两个表全部数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
 
\
 
6. 自链接(self join)
解释:使用自链接能够将自身表的一个镜像看成另外一个表来对待;
使用自链接的状况:当表中的某一个字段与这个表中另外字段的相关时,咱们可能用到自链接(自链接的本意就是将一张表当作多张表来作链接)。
 
例如:
数据库中有以下一个部门结构表
 
\
 
下面咱们须要将每个部门本身的名称和上级部门的名称都找出来。
 
若是有两张表,一个部门表,一个上级部门表,那很好写SQL语句;
但如今部门和上级部门都在一张表中,这种状况用自链接就比较好。
 
SQL语句及查询结果以下:
 
\
 
这里咱们注意到研发部没有出如今部门列表中,是由于在这里研发部是最上级部门,它没有上级部门。若是这时候咱们但愿研发部也出如今左侧,即便它没有上级部门。
咱们能够结合左链接
SQL语句及查询结果以下:
 
\
相关文章
相关标签/搜索