关联查询结果重复?为什么?

superjj2002 2002-01-25 02:24:36
select a.A,b.A, ... ... from a,b
where a.A = b.A and ...
这样查询,结果重复了,纳闷,为什么?
...全文
195 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
superjj2002 2002-01-29
  • 打赏
  • 举报
回复
谢谢各位先
我做关联的有个表为临时表,所以加个字段也无所了,所以就通过关联将用到的字段更新到那个临时表,暂时解决了。
再次感谢,结帐了,:)
laurel 2002-01-29
  • 打赏
  • 举报
回复
除非a表中(A,B,data)为primary key.
昵称被占用了 2002-01-29
  • 打赏
  • 举报
回复
to:superjj2002() 
我被你的
update c
set c.C = ( select a.C from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31' )
吓一跳,幸亏子查询返回多条,否则,我估计你惨了!
rwq_ 2002-01-29
  • 打赏
  • 举报
回复
我也依蓝天的画瓢:
select distinct(case when a.C > b.C then a.C else b.C end)yourcolumn from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31'
laoyr 2002-01-28
  • 打赏
  • 举报
回复
条件不够充分
redbat 2002-01-28
  • 打赏
  • 举报
回复
是不是a或b表中的主键不止3个?
superjj2002 2002-01-28
  • 打赏
  • 举报
回复
select case when a.C > b.C then a.C else b.C end from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31' )
如果需要这样的查询,怎样才能避免重复呢?
我需要这样的结果,怎么办?
蓝天 2002-01-28
  • 打赏
  • 举报
回复
select distinct a.C,b.C from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31'
superjj2002 2002-01-28
  • 打赏
  • 举报
回复
select a.C,b.C from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31' )
如果需要这样的查询,怎样才能避免重复呢?
superjj2002 2002-01-25
  • 打赏
  • 举报
回复
我该怎么做呢?
superjj2002 2002-01-25
  • 打赏
  • 举报
回复
说详细点。
a,b 两表中都有字段A,B,date(月底日期),分别按字段A,B,C聚集,没有重复。
我想通过a,b关联,确定a中一条记录(取这条记录的某几个字段),我这样写的:
update c
set c.C = ( select a.C from a,b
where a.A = b.A and a.B = b.B
and a.date = '2001-12-31' and b.date = '2001-12-31' )
结果,select的结果有重复的,看了一下,发现,选出的结果集重复(每条记录出现两次)。
不知道为什么?
谢谢大家帮助!来者都有分,:)
liuyann 2002-01-25
  • 打赏
  • 举报
回复
the A column in table a or table b is not unique, so there will retrive some duplicate rows.
xinpingf 2002-01-25
  • 打赏
  • 举报
回复
b中的a有重复,出现笛卡尔积
trunc 2002-01-25
  • 打赏
  • 举报
回复
你的表结构是什么样的?想要什么样的结果?
HaoGe 2002-01-25
  • 打赏
  • 举报
回复
列重复还是结果集重复?
列重复就去掉a.A,b.A中的一个。
结果重复就distinct
pengz 2002-01-25
  • 打赏
  • 举报
回复
因为b表的A有重复?
select a.A, c.A, ... ...
from a, (select distinct A from b) c
where a.A = c.A and ...

昵称被占用了 2002-01-25
  • 打赏
  • 举报
回复
结果重复,往往是由于关联条件不够,如例:
select a.A,b.A, ... ... from a,b
where a.A = b.A

如果 A,B表的A字段都是主键,绝对不会重复

还有,可能本来记录是不同的,但是由于你所选择的字段不多,也会造成选择的字段重复,这个可以加DISTINCT过滤。

select DISTINCT a.A,b.A, ... ... from a,b
where a.A = b.A and ...





LonelyWolfx 2002-01-25
  • 打赏
  • 举报
回复
select a.A ...from a,b where a.a=b.a and.......
去掉b.a吧

34,594

社区成员

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

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