是这样的,首先a表有一列control_seq是主键,b表是附件表,b表里面的proj_id对应的是a表的control_seq,但是附件表会有多条记录,也就是说proj_id会重复。这种情况下,我想以左表为准,查询a表记录的同时对a表的附件数目进行统计。我自己做了一下,发现a left jon b,因为b会有多条附件的缘故,造成查询出来的数据会重复。多谢大大们指教。谢谢!

解决方案 »

  1.   

    查询a表记录的同时对a表的附件数目进行统计?是统计行数吗?select a.control_seq,count(b.proj_id) from a left join b
    on a.control_seq=b.proj_id
    group by a.control_seq;
      

  2.   

    由于b表有重复的proj id,可能查询出来的结果集会重复。我现在是这样解决的,但是性能很差。
    select controlseq, (select count(projid) from a,b where a.controlseq=b.projid) from a.希望有更好的办法。
      

  3.   

    试试分析函数吧。
    select a.control_seq ,col1,col2....., count() over(group by b.proj_id)
    from a left join b
    on a.control_seq=b.proj_id如果是想统计每一control_seq对应的条数,则如上。如果是想统计b表的行数,则去掉group by 即可。