我觉的一条SQL查不出来这样的:
1: 1,2,3
2: 1,
3:
4:不和你要的是不是这种列表

解决方案 »

  1.   

    SELECT a.aid, count( DISTINCT b.rid ) 
    FROM a, b
    WHERE a.aid = b.aid
    GROUP BY b.aid查询结果:
    aid | count( distinct b . rid )  
    1 | 3 
    2 | 1 
      

  2.   

    楼上的朋友:
    谢谢你
    但我现在想要aid为3,4,5...的也出来呢?就是LEFT JOIN的,如果b表无记录就设为空的
      

  3.   

    SELECT a.aid, COUNT( DISTINCT b.rid ) 
    FROM a
    LEFT JOIN b
    USING ( aid ) 
    GROUP BY a.aid
    ORDER BY a.aid
    查询结果:
    aid | count( distinct b . rid )  
    1 | 3 
    2 | 1 
    3 | 0 
    4 | 0 
      

  4.   

    把using (aid)换成on a.aid=b.aid也可以
      

  5.   

    原来有COUNT( DISTINCT b.rid )这一招,开始没想到