版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
平时我们做关联,一般都是2~3张表,不太关注这样繁杂的写法,那今天咱们就看看这些写法吧
对将要说的这三种,先说一下要介绍的要点:on后面的条件可以放几个?什么时候结合着where条件一起使用?
大家可以先看看这个帖子,帖子的名字是:sqlserver left join的on中如何添加多个查询条件??
开始咱们的介绍吧
首先对于join 分三块:
1. join 、join inner (内联)
我们平时的写法是:
SELECT * FROM A JOIN B ON A.ID=B.ID
直接写 join,这样的写法其实就是 inner join ,
on后面就是我们说的条件,后面可以跟多个条件
SELECT TOP 1000 * FROM [DB0208].[dbo].[Orders] o JOIN [DB0208].[dbo].[BaseOrderStatus] b ON o.Status=b.StatusCode AND b.StatusCode=8 AND o.ProductId='660016'这种写法是正确的,当然也可以把条件放到where里面
如下写法:
SELECT TOP 1000 * FROM [DB0208].[dbo].[Orders] o JOIN [DB0208].[dbo].[BaseOrderStatus] b ON o.Status=b.StatusCode WHERE o.ProductId='660016' AND b.StatusCode=8
查询结果:
2.left join ,left outer join(左连接)
left join 叫左连接,left outer join叫左外连接,其实是一种,
后面的on,如果没有where条件,on后面只能跟一个关联条件,把之后的条件都加到where里面
left join(左联接): 返回包括左表中的所有记录和右表中联结字段相等的记录
查看如下写法:
SELECT TOP 1000 * FROM [DB0208].[dbo].[Orders] o