有两个查询,select a.cd,a.date from a                     
                  ,select b.cd,b.name from b 
     然后通过cd链接起来,如果在相同的cd下,第一条查询有6条数据,第二条查询有2条数据,结果现在是12条数据,想要的结果是,哪个查询条数多结果就是多少条,现在结果应该就是6条。并且a.date 和 b.name必须全部查出来.大神快来解救我吧

解决方案 »

  1.   

    select a.cd,a.date,b.name from a  ,b where a.cd=b.cd(+);
      

  2.   


    -- 哪个查询条数多结果就是多少条
    -- 这个,你要用 ful join 了。
    -- 借楼上语句。
    select a.cd,a.date,b.name from a full join  b on  a.cd=b.cd;
      

  3.   

    如果a,b的cd字段都有不同的值,全外连接查询的条数就比条数多的结果多了如果不确定a,b哪个表的条数多,这个sql应该怎么写呢
      

  4.   

    左关联,left join 
      

  5.   

    不行、因为a和b现在的cd一样,所以结果件数会相乘
      

  6.   

    a表和b表中是否每个cd仅有一条记录,还是说在同一个表中一个cd可能有两条记录?
      

  7.   

    终于解决了,用的是两个查询分别添加row_number() over(partition by cd order by name),然后full join进行连接,然后把刚那个也作为连接条件就可以了