我也A,B 两张表。A,B两表通过A.caller=B.fld_mobile字段关联。
结果我B表中存在重复B.fld_mobile,导致查询出来的结果重复很多显示。select A.*,B.kind from A,b
where A.caller=B.fld_mobile  --B表重复了,导致本来应该只显示一条结果显示了多条例如A表有一个‘110’,B表存在10个‘110’,结果匹配显示出来的就只有10条数据!!!
请问怎么才能做到匹配的时候只显示一个????

解决方案 »

  1.   

    select A.*,B1.kind from A,(select distinct fld_mobile,kind from B) B1
    where A.caller=B1.fld_mobile;  
      

  2.   

    看你的SQL,结果10条会一样吧distinct不就行了
      

  3.   


    这样不行,fld_mobile重复 了,但是kind不重复。这样组合问题还是存在
      

  4.   

    那你这个就有问题了,kind不重复的数据你到底想要哪条记录啊?
      

  5.   

    SQL> 
    SQL> with A as
      2  (
      3    select 110 caller from dual
      4  )
      5  ,B as
      6  (
      7    select 110 fld_mobile,'A' kind from dual union all
      8    select 110 fld_mobile,'B' kind from dual union all
      9    select 110 fld_mobile,'C' kind from dual union all
     10    select 110 fld_mobile,'D' kind from dual union all
     11    select 110 fld_mobile,'E' kind from dual union all
     12    select 110 fld_mobile,'F' kind from dual union all
     13    select 110 fld_mobile,'G' kind from dual union all
     14    select 110 fld_mobile,'H' kind from dual union all
     15    select 110 fld_mobile,'I' kind from dual union all
     16    select 110 fld_mobile,'J' kind from dual
     17  )
     18  select distinct A.*,wm_concat(b.kind)over(partition by A.caller) from A,B
     19  where A.caller=B.fld_mobile
     20  /    CALLER WM_CONCAT(B.KIND)OVER(PARTITIO
    ---------- --------------------------------------------------------------------------------
           110 A,B,C,D,J,F,G,H,I,ESQL>