LEFT OUTER JOIN 与 *= 到底有什么不同?

Daniel22_cn 2006-06-22 02:30:27
假定 表 a 中有数据,表b 中没有数据

select a.id,
b.data
from a left outer join b on a.id = b.id
where a.id > 0 and b.id > 0

结果集为空

select a.id,
b.data
from a,b
where a.id *= b.id
and a.id > 0
and b.id > 0

数据结果正确


使用left outer join如何才能解决这个问题呢?
...全文
196 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-06-27
  • 打赏
  • 举报
回复
樓上說這話的時候經過測試沒有??


Create Table A(ID Int ,Name Varchar(50))
Insert A Select 1,'liu,jun,lyg'
Union All Select 2,'bb,aa'
Union All Select 3,'cc,dd,ee'
Create Table B(ID Int ,Name Varchar(50))
Insert B Select 1,'kk'
GO
Select A.*,B.Name From A Left Join B On A.ID=B.ID
Select A.*,B.Name From A , B Where A.ID*=B.ID

GO
Drop Table A,B
--Result
/*
ID Name Name
1 liu,jun,lyg kk
2 bb,aa NULL
3 cc,dd,ee NULL
*/
marco08 2006-06-27
  • 打赏
  • 举报
回复
早期版本的SQL Server使用*= 和 =* 左外联和右处联
现在SQL Server2000不再支持
paoluo 2006-06-22
  • 打赏
  • 举报
回复
--Where 改為and即可啊
Create Table A(ID Int)
Create Table B(ID Int,data Int)
Go
Insert A Select 1
Union All Select 2
Union All Select 3
GO
select a.id,
b.data
from a left outer join b on a.id = b.id
And a.id > 0 and b.id > 0
GO
Drop Table A,B
--Result
/*
id data
1 NULL
2 NULL
3 NULL
*/
qpeg 2006-06-22
  • 打赏
  • 举报
回复
因为b中无数据
所以条件where a.id > 0 and b.id > 0 放在最后无结果
select a.id,
b.data
from a left outer join b on a.id = b.id and b.id > 0
where a.id > 0
itblog 2006-06-22
  • 打赏
  • 举报
回复
select a.id,
b.data
from a left outer join b on a.id = b.id
and a.id > 0 and b.id > 0
qpeg 2006-06-22
  • 打赏
  • 举报
回复
因为b中无数据
所以条件where a.id > 0 and b.id > 0 放在最后无结果
select a.id,
b.data
from a left outer join b on a.id = b.id
where a.id > 0
WangZWang 2006-06-22
  • 打赏
  • 举报
回复
select a.id, b.data
from a left outer join b on a.id = b.id and
b.id > 0 and a.id > 0

34,575

社区成员

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

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