sql关联查询

1.内连接
是最普遍的一种连接方式,选出相连的两张表都互相满足连接条件的数据。

写法:select a inner join b on a.id=b.aid (其中inner可忽略)

举例:a表:b表:

查询语句:SELECT * from a inner join b on a.id=b.id。

将a表的每一条数据拿出来,遍历b表进行对比,满足条件数据的返回。

结果:


2.外连接

比较常用的且非常有用的连接方式,有3种外连接方式。

2.1左外连接

写法:select * from a left outer join b on a.id=b.aid (outer可忽略)

意思就是查询结果显示a表所有数据,加上b表满足a.id=b.aid的数据,若b表没有满足条件的数据,设为null。

举例:a表:b表:

查询语句:SELECT * from a left outer join b on a.id=b.id。

将a表的每一条数据拿出来,遍历b表进行对比,将b表中满足条件的数据加到a表数据后面作为查询结果,b表中不满足条件的数据把null加到a表数据后面作为查询结果。

结果:

2.2 右外连接

写法:select * from a right outer join b on a.id=b.aid (outer可忽略)

意思就是查询结果显示b表所有数据,加上a表满足a.id=b.aid的数据,若a表没有满足条件的数据,设为null。

举例:a表:b表:

查询语句:SELECT * from a right outer join b on a.id=b.id。

将b表的每一条数据拿出来,遍历a表进行对比,将a表中满足条件的数据加到b表数据后面作为查询结果,a表中不满足条件的数据把null加到b表数据后面作为查询结果。

结果:

其实右外连接和左外连接都一个模子里刻出来的,将表对换下右外连接马上变左外连接。

2.3 全连接

全连接会返回相关联的两张表的所有关联数据,如果某行在另一张表中没有匹配的值,则设为null。

相当于左外连接+右外连接。

写法示例:SELECT * from a full outer join b on a.id=b.id。(outer可忽略)

注意:mysql不支持全连接


3 自连接

自连接意思是把自身表当成另外一张表看待,互相关联查询,连接方式可以使用以上的内外连接。
这种连接方式可以解决很多奇怪的问题。

a表:b表:

查询语句:SELECT ab.* from a ab,a ac where ab.id>ac.id

结果:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值