一个非常性感的问题!大家都来解答!

空白画映 2010-04-06 05:54:30
说明:
有四个表分别是A,B,C,D

表A有1,2,3字段

表B有4,5,6字段

表C有7,8字段

表D有9,10,11字段

已知条件:
表A的2字段表B的5字段关联表B的5字段又与表C的8字段关联,表C的8字段与表D的10字段关联

需求:要四表同时联查,并且插入E表,E表是已存在的表。A表只插入2,3字段,B表5字段C表8字段D表9,10字段

自己写的代码如下:

insert into E(1,2,3,4,5,6)
select distinct a.2,a.3,c.8,d.9,d.10 FROM A a left join B b on a.2=b.5
left join C c on B.5 = c.8 left join D d on c.8=d.10

以上代码执行后数据会重复,经测试数据每条重复500多遍,如果只用表B,C,D三个表联查就不会出现数据重复。
请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?
...全文
103 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
空白画映 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 feixianxxx 的回复:]
引用 9 楼 junjie94bei 的回复:
如果只用B,C,D三个表联查的话 如图:
不会重复!

试试6楼
[/Quote]

尝试了6楼的办法,结果还是重复。
feixianxxx 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 junjie94bei 的回复:]
如果只用B,C,D三个表联查的话 如图:
不会重复!
[/Quote]
试试6楼
老黎 2010-04-06
  • 打赏
  • 举报
回复
尝试6楼的答案
空白画映 2010-04-06
  • 打赏
  • 举报
回复
如果只用B,C,D三个表联查的话 如图:
不会重复!
空白画映 2010-04-06
  • 打赏
  • 举报
回复


贴一个大图!!
空白画映 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 feixianxxx 的回复:]
引用楼主 junjie94bei 的回复:
说明:
有四个表分别是A,B,C,D

表A有1,2,3字段

表B有4,5,6字段

表C有7,8字段

表D有9,10,11字段

已知条件:
表A的2字段和表B的5字段关联,表B的5字段又与表C的8字段关联,表C的8字段与表D的10字段关联

需求:要四表同时联查,并且插入E表,E表是已存在的表。A表只插入2,3字段,……
[/Quote]



图片可以看见ID已经到100多万了。数据全是重复
feixianxxx 2010-04-06
  • 打赏
  • 举报
回复
修改

insert into E(1,2,3,4,5,6)
select k.*,c.8,d.9,d.10
FROM (select distinct 2,3 from A ) k left join B b on k.2=b.5
left join C c on B.5 = c.8 left join D d on c.8=d.10
feixianxxx 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 junjie94bei 的回复:]
引用 2 楼 sql77 的回复:
如果只用表B,C,D三个表联查就不会出现数据重复。
请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?

是完全重复的DISTINCT 才能去重,


没有写上,知道A表里面有数据重复。 A表里面的2字段有很多是重复得。2字段又跟B表的5字段关联。
会出现数据重复。 请问怎么能不让他重复
[/Quote]

insert into E(1,2,3,4,5,6)
select a.2,a.3,c.8,d.9,d.10
FROM (select distinct 2,3 from A ) k left join B b on k.2=b.5
left join C c on B.5 = c.8 left join D d on c.8=d.10
feixianxxx 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 junjie94bei 的回复:]
说明:
有四个表分别是A,B,C,D

表A有1,2,3字段

表B有4,5,6字段

表C有7,8字段

表D有9,10,11字段

已知条件:
表A的2字段和表B的5字段关联,表B的5字段又与表C的8字段关联,表C的8字段与表D的10字段关联

需求:要四表同时联查,并且插入E表,E表是已存在的表。A表只插入2,3字段,B表5字段C表8字段D表9,10字段

自……
[/Quote]
贴点数据看
空白画映 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sql77 的回复:]
如果只用表B,C,D三个表联查就不会出现数据重复。
请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?

是完全重复的DISTINCT 才能去重,
[/Quote]

没有写上,知道A表里面有数据重复。 A表里面的2字段有很多是重复得。2字段又跟B表的5字段关联。
会出现数据重复。 请问怎么能不让他重复
SQL77 2010-04-06
  • 打赏
  • 举报
回复
如果只用表B,C,D三个表联查就不会出现数据重复。
请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?

是完全重复的DISTINCT 才能去重,

老黎 2010-04-06
  • 打赏
  • 举报
回复
A表数据有重复

34,576

社区成员

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

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