说明:
有四个表分别是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三个表联查就不会出现数据重复。
请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?

解决方案 »

  1.   

    如果只用表B,C,D三个表联查就不会出现数据重复。
    请大侠帮忙为什么会重复啊?有什么办法能不它重复呢?是完全重复的DISTINCT 才能去重,
      

  2.   


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

  3.   


    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 
      

  4.   

    修改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 
      

  5.   

    如果只用B,C,D三个表联查的话 如图:
    不会重复!