挺有意思的SQL语句!!

oldmoon 2006-09-22 11:51:04
有两个表A(id,name),B(id,sellID,buyID):
现在要提取sellID=A.id或者buyID=A.id的A,B表中的所有数据

现在我发现写成select * from A,B where sellID=A.id or buyID=A.id会三条三条的重复,按说要重复也应该是两条啊,怎么会是三条?

另外写成:
select * from A,B where (sellID=A.id or buyID=A.id) and A.id=5就正常了?

为什么?请各位说说原理?

...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldmoon 2006-09-22
  • 打赏
  • 举报
回复
select * from A,B where sellID=A.id or buyID=A.id
这是B表sellID等于A表ID或B表buyID等于A表中的id都查出来
也就是你要的sellID=A.id或者buyID=A.id的A,B表中的所有数据!

------------
所有数据都查出来,这我知道啊,关键是,比如会重复查出三次,比如,表B.id=5的记录,会在查询出来下次:例如:
id
1
1
1
2
2
2
3
3
3
这种格式
rockywu 2006-09-22
  • 打赏
  • 举报
回复
select * from A,B where sellID=A.id or buyID=A.id
这是B表sellID等于A表ID或B表buyID等于A表中的id都查出来
也就是你要的sellID=A.id或者buyID=A.id的A,B表中的所有数据!

select * from A,B where (sellID=A.id or buyID=A.id) and A.id=5就正常了!
是B表sellID等于A表ID或B表buyID等于A表中的id同时还要求A表id为5的!这和你所要的意思不一致啊

sunjiancn 2006-09-22
  • 打赏
  • 举报
回复
select * from A,B where sellID=A.id or buyID=A.id
select * from A,B where (sellID=A.id or buyID=A.id) and A.id=5

是同一功能吗?
oldmoon 2006-09-22
  • 打赏
  • 举报
回复
这就是两个表的结构啊,表B国的sellID,buyID都由A.id确定
dawugui 2006-09-22
  • 打赏
  • 举报
回复
A.id=5?,指定具体的值了.
你给出两个表的数据才看得清楚.

34,593

社区成员

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

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