我有两张桌子:用户和照片。
用户有很多照片。照片有一个名为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;
答案 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。