我有2张桌子。 MySQL的
用户:A_ID,名称 事件:B_ID,A_ID,cat_id,日期
现在我想让所有在一段时间内参与更多活动的用户,并且还需要根据类别添加。我正在做这样的事情:
select name from users ,
(select A_id, count(*)
from event
where date<=givendate
group by A_id
order by count(*) desc ) e
where users.A_id=e.a_id
limit 0,5
有没有简单易懂的方法来编写该脚本?
由于
答案 0 :(得分:0)
除了一些小问题之外,您的查询看起来还不错:
ORDER BY
和LIMIT
应该在外部选择,否则结果的顺序是不确定的。JOIN
关键字加入两个表。试试这个:
SELECT u.name
FROM users AS u
JOIN
(
SELECT A_id, COUNT(*) AS cnt
FROM event
WHERE date <= givendate
AND cat_id = 42
GROUP BY A_id
) AS e
USING (A_id)
ORDER BY e.cnt DESC
LIMIT 5