zwws's blog

Blog For PHP Learning...

  PHP博客 :: 首页 :: 联系 :: 聚合  :: 管理
  6 Posts :: 0 Stories :: 15 Comments :: 0 Trackbacks
给个通俗的解释吧.
例表a
aid adate
1 a1
2 a2
3 a3
表b
bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2
那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符
同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

posted on 2007-02-23 17:32 zwws 阅读(59107) 评论(11)  编辑 收藏 引用 网摘 所属分类: SQL技巧

Feedback

# re: sql的left join 命令详解[未登录] 2007-03-27 15:14 bkkkd
不错
实际经验
看sql就好容易理解  回复  更多评论
  

# re: sql的left join 命令详解 2007-07-25 13:09 上海探戈
不错~感谢作者~  回复  更多评论
  

# re: sql的left join 命令详解 2007-08-10 11:19 小丫
怎样将sql联接后的记录生成一个表呢?提示有重复列,不允许生成  回复  更多评论
  

# re: sql的left join 命令详解 2007-11-08 09:14 df
很好  回复  更多评论
  

# re: sql的left join 命令详解 2007-11-26 17:57 meng
very good!!!!!!!!!

Thank you!!!!!!!!!  回复  更多评论
  

# re: sql的left join 命令详解 2007-12-11 10:34 fq
Thank you  回复  更多评论
  

# re: sql的left join 命令详解 2008-03-11 16:21 fishbone
依据作者的例子,执行以下语句,

select * from a left join b
on a.aid = b.bid and a.aid = 3

select * from a left join b
on a.aid = b.bid where a.aid = 3

能解释一下为什么这两个查询的结果不一致?

email: lucky7_2000@126.com  回复  更多评论
  

# re: sql的left join 命令详解[未登录] 2008-03-17 18:11 ruderal
select * from a left join b
on a.aid = b.bid and a.aid = 3
等于
select * from a left join b
on a.aid = b.bid where a.aid = 3 or a.aid is null  回复  更多评论
  

# re: sql的left join 命令详解 2008-03-28 11:57 深山狩猎人
牛人!!!!  回复  更多评论
  

# re: sql的left join 命令详解 2008-04-27 15:10 joe
这只有两个表,如果有多个表呢?
如A表中有字段a,b,c,d,e;
B表中有字段a,f,g,h
C表中有字段a,i,j,k
D表中有字段a,l,m,n


求结果a,b,c,d,sum(g),sum(i),sum(m) 条件为日期h between aa and bb

如何写?  回复  更多评论
  

# re: sql的left join 命令详解 2008-06-04 01:05 文祥
的确不错啊~~~很详细~~谁都能理解 谢谢  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: