解决方案 »

  1.   

    可以改用right 或left join你这个inner join 是取出3个表中都能对应上的记录
      

  2.   

    left 就把a4也取来了;理论上left跑不通right应该也是跑不同吧
      

  3.   

    1.a.id=c.id 和b.id=c.id的结果是一样的;这个自然是一样,因为你a和b内链接就只剩下1,2 2个数据,1,2两个数据再和c连接自然就只剩下1.2.如何获取到
    a1,a1,a1,1,b1,b1,b1,1,c1,c1,1
    a2,a2,a2,2,b2,b2,b2,2,null,null,null
    a3,a3,a3,3,null,null,null,null,C2,C2,3
    呢?那4呢?有4 没4 sql可差远了。
      

  4.   


    这样运行了如果结果靠谱的话,那么应该是可以合并
    left,得出的结果列表数据不会a*b*c的数量级增加
    而且表0只获取一次,而不是3次
    速度应该变快
      

  5.   

     update a set 
     a1=case when b1 is not null then b1 else a1 end,
     a2= case when c1 is not null then c1 else a2 end
     from a
     left join b on a.id=b.id
     left join c on a.id=c.id 
    这样靠谱