| 风信Java论坛 ›› Microsoft SQL Server ›› [转]在SQL中join、inner join和left join的区别 | 登录 -> 注册 |
|
1F [转]在SQL中join、inner join和left join的区别 jastby Post by : 2009-06-11 11:17:27.0
在SQL中join、inner join和left join的区别 这个问题,相信是很多初涉及SQL的用户的疑问。我不是学习计算机的,也不是学习数据库或编程的,想当初看到有些地方用join,有些地方用inner join,有些地方又用left join或right join,也是很想不明白,不知道有什么区别。在咨询同事的后,大致明白了一些,但也不是很明白,后来就自己按照指点的逻辑自己做数据测试,再想想,才想明白其中的道理。现根据个人理解,将它作一简略答复。由于怕放到上述的地址中,哪一天找不到了,故重复在自己的BLOG下。如果还有其他高见,请补充。 一、join 、inner join、left join 之间的关系 1、join=inner join,表示内联系,能查询出来的结果,是在两个表中都同时存在的数据。inner join的语法在以前的SQL版本中才存在,后延继到现在。需要说明的是,在access中必须使用 inner join,access 2000/97 只支持join的用法。其他版本的acccess,则自己根据情况使用。 二、实例 1 、假定有两个表:(Fnote 字段都为NULL) 1)K_01 2)K_02 2、分别执行以下不同的SQL,得到的结果,将是不同的。 --1)以两表中都共同有的字段为基准,取K_01的全部和K_02的Fnumber --得到的结果: --2)以两表中都共同有的字段为基准,取K_02全部和K_01的Fnumber --得到结果: --3)01为基准,取K_01的全部和K_02的Fnumber --得到的结果 --4)以K_02为基准,取K_02的全部和K_01的FNumber --得到的结果 --5)以K_01为基准,取K_02 的全部和K_01的Fnumber --得到的结果 三、从上面的实例中,可以看出,当使用join时无论怎么取数,得到的结果都是相同的。但当使用left join取数时,则与哪一个表在左边和右边,直接影响到取数得到的结果。 同样地,right join(右联接)也是同样的道理,请自行测试,并思考其中的规律。 |
|
2F jastby Post by : 2009-06-11 11:18:33.0
left join:左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 |
| 风信Java论坛 ›› Microsoft SQL Server ›› [转]在SQL中join、inner join和left join的区别 | 登录 -> 注册 |