多条件表连接,出来的结果是想要的数据的几倍,请教

伊丽莎白S 2006-11-13 09:28:08
一个语句,目的是要连接两个表,有三个条件,三个条件全部满足的才是想要的结果。
我写的是形如:
select a.*,b.xx,b.yy from atable as a left join btable as b
ON a.FSITE = b.fsite AND a.NNO = b.nno AND a.PROJECT = b.project
最后出来的结果却是我想要的结果被重复了两遍,sum出来的结果就成了原值*3

我怀疑是我连接的条件写得不对。因为把left jion 改成 inner join,结果也一样

请教,这样的语句要怎样写?
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazyflower 2006-11-13
  • 打赏
  • 举报
回复
A表中的fsite,nno,project相同的记录是不是很多。
比如有2条:
fstit nno project 其他数据
1 2 3 4
1 2 3 4
那样连接出来就有2条,而不是你想要的1条
如果A中有2条相同的记录,B中有3条,那么LEFT JOIN出来是2条,INNER JOIN出来是6条,RIGHT JOIN出来是3条。
crazyflower 2006-11-13
  • 打赏
  • 举报
回复
A表中的fsite,nno,project相同的记录是不是很多。
比如有2条:
fstit nno project 其他数据
1 2 3 4
1 2 3 4
那样连接出来就有2条,而不是你想要的1条
如果A中有2条相同的记录,B中有3条,那么LEFT JOIN出来是2条,INNER JOIN出来是4条,RIGHT JOIN出来是3条。
crazyflower 2006-11-13
  • 打赏
  • 举报
回复
A表中的fsite,nno,project相同的记录是不是很多。
比如有2条:
fstit nno project 其他数据
1 2 3 4
1 2 3 5
那样连接出来就有2条,而不是你想要的1条
marco08 2006-11-13
  • 打赏
  • 举报
回复
加 distinct 試試
marco08 2006-11-13
  • 打赏
  • 举报
回复
select distinct a.*, b.xx, b.yy from atable as a
left join btable as b ON a.FSITE = b.fsite AND a.NNO = b.nno AND a.PROJECT = b.project
伊丽莎白S 2006-11-13
  • 打赏
  • 举报
回复
数据提供很麻烦。我加上了distinct,出来的结果就是想要的结果了。
只是不知道为什么。莫非多条件查询一定要加distinct,否则就会出很多重复纪录?
后来又看了下,并不是所有记录都重复同样的次数,有的三次有的四次
akuzou 2006-11-13
  • 打赏
  • 举报
回复
从你的语句发现不了问题,希望你能给点数据
Darc 2006-11-13
  • 打赏
  • 举报
回复
这些连接关键字中有你不想要的值。

34,588

社区成员

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

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