mysql语句解析_Mysql join语句解析

标签:

1. 右连接(right join, right outer join)

解释:以右表(Sys_Employee)为准,而左表(Sys_Department)中的记录只有当其DepartmentId在右表中存在时才会查询出来;

20120925090148353.jpg

2. 左连接(left join, left outer join)

解释:以左表(Sys_Department)为准,而右表(Sys_Employee)中的记录只有当其DepartmentId在左表中存在时才会查询出来;

20120925090148512.jpg

3. 全连接(full join, full outer join)

解释:两个表中DepartmentId的并集(U)记录;

20120925090148634.jpg

4. 内连接(join, inner join)

解释:两个表中DepartmentId的交集(n)记录;

20120925090149527.jpg

5. 交叉连接(cross join,完全连接)

解释:没有WHERE子句的交叉连接,它返回被连接的两个表所有数据行的笛卡尔积,返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

20120925090149668.jpg

6. 自连接(self join)

解释:使用自连接可以将自身表的一个镜像当作另一个表来对待;

使用自连接的情况:当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自连接(自连接的本意就是将一张表看成多张表来做连接)。

例如:

数据库中有如下一个部门结构表

20120925090150341.jpg

下面我们需要将每一个部门自己的名称和上级部门的名称都找出来。

如果有两张表,一个部门表,一个上级部门表,那很好写SQL语句;

但现在部门和上级部门都在一张表中,这种情况用自连接就比较好。

SQL语句及查询结果如下:

20120925090150107.jpg

这里我们注意到研发部没有出现在部门列表中,是因为在这里研发部是最上级部门,它没有上级部门。如果这时候我们希望研发部也出现在左侧,即使它没有上级部门。

我们可以结合左连接

SQL语句及查询结果如下:

20120925090150476.jpg

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值