为什么左连接,写法不同,返回结果也不同

handsomerun 2006-08-14 10:03:26
表A

A AA
1 22
2 33
3 44

表B

A BB CC
1 23 33

如果这样

select A.A B.BB FROM A,B WHERE A.A *= B.A
那么返回的是

1,23
2,
3,
后面的BB是空,这是对的
如果用
select A.A B.BB FROM A Left Join b ON A.A = B.A
那么返回的记录是一样的



但是如果加了一个条件


select A.A B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33
那么这样,还是返回三条记录
1,23
2,
3,

但是
select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33
但是这样,就只有
1,23

为什么,为什么???
不是这两个左连接是一样做的吗

我是在sybase下,做的这个测试,不知道在sql下面,是不是也是这个结果,
这里高手很多,所以发这里来了
...全文
157 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamnow 2006-08-14
  • 打赏
  • 举报
回复
搭车学习
handsomerun 2006-08-14
  • 打赏
  • 举报
回复
好,明白了,sql版的高手就是多,学习了
谢谢大家,揭帖了
xyxfly 2006-08-14
  • 打赏
  • 举报
回复
where--> and
mugua604 2006-08-14
  • 打赏
  • 举报
回复
select A.A B.BB FROM A Left Join b ON A.A = B.A 
where B.CC = 33--------这里都已经做了个条件判断了,只取符合这个条件的记录!
xyxfly 2006-08-14
  • 打赏
  • 举报
回复
select A.A B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33
那么这样,还是返回三条记录
1,23
2,
3,

但是
select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33
但是这样,就只有
1,23

--这不一样的
子陌红尘 2006-08-14
  • 打赏
  • 举报
回复
select A.A B.BB FROM A Left Join b ON A.A = B.A where B.CC = 33

==

select C.AA,C.BB from (select A.A,B.BB,B.CC FROM A Left Join b ON A.A = B.A) C where C.CC=33
子陌红尘 2006-08-14
  • 打赏
  • 举报
回复
select A.A,B.BB FROM A,B WHERE A.A *= B.A AND B.CC = 33

==

select A.A,B.BB FROM A Left Join B ON A.A = B.A AND B.CC = 33

==

select A.A,C.BB FROM A Left Join (select * from B WHERE CC = 33) C ON A.A = C.A

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧