我要从两个表中查询多个字段,但是其中的某个字段重复的只显示一次!如何实现,如select a.id ,a.name,b.id,b.name from A a ,B b where a.id = b.aid试过distinct ,但是distinct是所有的字段重复才会去重,我只是当a.id相同时去重,如何实现! a.id 是18位字符串!期待指点!

解决方案 »

  1.   

    select * from 
    (
    select a.id ,a.name,b.id bid,b.name bname,
           row_number() over(partition by a.id order by rowid) r1 
    from A a ,B b 
    where a.id = b.aid
    ) t
    where r1 = 1
      

  2.   

    select a.id ,max(a.name),max(b.id),max(b.name) from A a ,B b where a.id = b.aid
    group by a.id
      

  3.   


    select a.id ,max(a.name),max(b.id),max(b.name) from A a ,B b where a.id = b.aid
    group by a.id
      

  4.   


    select a.id ,b.id,max(a.name),max(b.name) from A a ,B b where a.id = b.aid
    group by a.id, b.id
      

  5.   

    select a.id ,max(a.name),max(b.id),max(b.name) from A a ,B b where a.id = b.aid
    group by a.id
      

  6.   

    可以这样
    select a.id ,a.name,b.id,b.name from A a ,B b where a.id = b.aid
    select distinct a.id,
       (select a1.name from A a1 where a1.id = a.id and rownum = 1) as name1,
       (select b1.name from B b1 where b1.id = b.id and rownum = 1) as name2
      from A a, B b
     where a.id=b.id
      

  7.   

    select a.id ,max(a.name),max(b.id),max(b.name) from A a ,B b where a.id = b.aid
    group by a.id