设为首页 加入收藏

TOP

关于sqlserver中的jion,innerjoin,leftjoin,leftouterjoin,rightjoin,rightouterjoin的几点使用心得
2015-07-24 10:39:42 来源: 作者: 【 】 浏览:1
Tags:关于 sqlserver jion innerjoin leftjoin leftouterjoin rightjoin rightouterjoin 使用 心得

平时我们做关联,一般都是2~3张表,不太关注这样繁杂的写法,那今天咱们就看看这些写法吧

对将要说的这三种,先说一下要介绍的要点:on后面的条件可以放几个?什么时候结合着where条件一起使用?

大家可以先看看这个帖子,帖子的名字是:sqlserver left join的on中如何添加多个查询条件??

链接:http://bbs.csdn.net/topics/270023422

开始咱们的介绍吧

首先对于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叫左外连接,其实是一种,<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+uvPD5rXEb26jrMjnufvDu9PQd2hlcmXM9bz+o6xvbrrzw+bWu8TcuPrSu7j2udjBqsz1vP6jrLDR1q6687XEzPW8/ra8vNO1vXdoZXJlwO/D5jwvcD4KCjxwPmxlZnQgam9pbijX88GqvdMpo7ogt7W72LD8wKjX87Ht1tC1xMv509C8x8K8us3T0rHt1tDBqr3h19a2zs/gtci1xLzHwrw8YnI+CjwvcD4KPHA+sum/tMjnz8LQtLeoo7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:sql;">SELECT TOP 1000 * FROM [DB0208].[dbo].[Orders] o LEFT JOIN [DB0208].[dbo].[BaseOrderStatus] b ON o.Status=b.StatusCode AND b.StatusCode=8 AND o.ProductId='660016'

这种写法就是错误,因为第二条件on已经不起作用了,查询结果:

\

正确的写法:

  SELECT TOP 1000 *
  FROM [DB0208].[dbo].[Orders] o
  JOIN [DB0208].[dbo].[BaseOrderStatus] b
  ON o.Status=b.StatusCode 
  WHERE b.StatusCode=8 AND o.ProductId='660016'

当然也可以这么写:

  SELECT TOP 1000 *
  FROM [DB0208].[dbo].[Orders] o
  JOIN [DB0208].[dbo].[BaseOrderStatus] b
  ON o.Status=b.StatusCode AND b.StatusCode=8
  WHERE  o.ProductId='660016'
就是说,有where条件控制,on后面可以用多个 条件,查询结果就和第一张截图内容一样了

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

right join 叫右连接,right outer join叫右外连接,其实是一种,

后面的on,也只能跟一个关联条件,和left join是一样的。

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

3和2类似,就不再赘述啦。

-------------------------------------

这些是一个小同事问我的,之前一直都想整理,现在就把它写出来,让大家参考,以后有新人再问相关问题,直接给他链接就好了,东西在于精,学习一次,在以后的反复练习中才能掌握。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqlserver2008出现数据库主体在该.. 下一篇很基础的SQL内连接与外连接

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)
·Redis - The Real-ti (2025-12-26 08:20:50)
·Bash 脚本教程——Li (2025-12-26 07:53:35)
·实战篇!Linux shell (2025-12-26 07:53:32)