表1 a
表2 b
a表字段 aid aname
        1   世隔
         2   隔工
         3   世工
b表字段 bid aid bname
        1   2   工作
        2   2   工成
         3   4   好莱坞现在我要统计a表字段aid和b表字段aid是否有关联值select count(*) from a left join b on a.aid=aid
统计数是四条
select count(*) from a,b where a.aid=aid
这个是两条而我想要的结果是1条记录,因为b表aid的值2是重复,在重复情况下我只视为一条

解决方案 »

  1. select count(distinct aid) from a left join b on a.aid=aid 
    看能用不?
      

  2. select count(*) from a inner join (select aid from b group by aid) t on a.aid = t.aid 
      

  3. 呵呵,不过,不知道楼主的详细需求。如果楼主第二句离目标不远的话,就用 select count(distinct a.aid) from a,b where a.aid=b.aid group by a.aid
    否则就用:
    select count(distinct a.aid) from a inner join b on a.aid=b.aid where 1 group by a.aid having count(a.aid) > 1
    或者:
    select count(distinct a.aid) from a inner join b on a.aid=b.aid where 1 group by a.aid 
    如果都不是,楼主说说需求吧,我不猜测了。
      

  4. select count(*) from a ,b where a.aid = b.aid group by a.aid
      

  5. distinct a.aidselect count(*) from a ,b where a.aid = b.aid group by a.aid得到的结果都是不正确的
      

  6. select count(a.distinct aid) from a left join b on a.aid=aid 
    还不正确? 我晕 你试没有
      

  7. select count(distinct a.aid) from a left join b on a.aid=aid 刚写错了
      

  8. select count(*) from b left join a on b.aid=a.aid 试一下
      

  9. select count(*) from a left join (select distinct b.aid from b) t on a.aid = t.aid
      

  10. 先查出b表中不重复的记录,,再用a表和b表关联进行查询...搞定.
      

  11. SELECT count( DISTINCT a.aid ) 
    FROM a, b
    WHERE a.aid = b.aid 
      

  12. SELECT count( DISTINCT a.aid ) 
    FROM a
    LEFT JOIN b ON a.aid = b.aid
    WHERE a.aid = b.aid  
      

  13. select count(*) from a,b where a.aid=b.aid group by a.aid
      

  14. 按着各位楼主的指示去调试,得到的结果还是不对
    如果一条重复,一条不重复或重复统计出来的结果都应该为2才是
    可以算出的结果为1
    在phpmyadmin运行统计算出两条记录,分别为1 1不累加
      

  15. select sum(a.aid) as countnum from a,b where a.aid=b.aid group by a.aid
      

  16. SELECT count( DISTINCT a.aid ) 
    FROM a, b 
    WHERE a.aid = b.aid 我是按这么去做的,在phpmyadmin下运行分别出来两条记录1和1
    没把1 1累加
      

  17. a表字段 aid aname 
            1  世隔 
            2  隔工 
            3  世工 
    b表字段 bid aid bname 
            1  2  工作 
            2  2  工成 
            3  1  好莱坞 SELECT count( DISTINCT a.aid ) 
    FROM a, b 
    WHERE a.aid = b.aid 统计得到的结果为 1 1 
    而不是2
      

  18. select sum(countnum) as num from(
    select count(a.aid) as countnum from a,b where a.aid=b.aid group by a.aid )tempt
      

类似问题 »