比较SQL where子句中的计数

时间:2014-12-11 19:53:02

标签: mysql sql

我有两张桌子:用户和照片。

用户有很多照片。照片有一个名为user_id的列,照片有一个用户。照片还有一个名为“报告”的列,其为0或1。

我需要知道至少有1张报告= 1的照片的用户数量。我还需要获得至少有2张报告= 1的照片的用户数量。

我该怎么做?这是我想做的,但显然不起作用:

select count(*)
from users join 
 (select * from photos where photos.reported = 1) as p2 
 on users.photo_id = p2.id;

3 个答案:

答案 0 :(得分:1)

这至少是1

select count(distinct userid)
from photos
where reported = 1

这至少是2。

select count(distinct userid)
from photos
where reported = 1
group by userid
having count(userid) > 2

答案 1 :(得分:0)

以下内容应该有效

 select count(hasOne) cntHasOne, count(hasTwo) cntHasTwo from
(select users.user_id, 1  hasOne,
case when count(*) > 1 then  1 else 0 end hasTwo
from users inner join solution on(users.user_id = solution.user_id) 
where solution.winning_status  = 1
group by user_id) T1

答案 2 :(得分:0)

只需获得计数的直方图:

select numreported, count(*), min(user_id), max(user_id)
from (select p.user_id, sum(p.reported = 1) as numreported
      from photos p
      group by p.user_id
     ) p
group by numreported
order by numreported;

这为您提供了所有计数为numreported的用户数,包括0。