Mysql 这个sql查询可以简化吗?
我有两张桌子。MySql 用户:A_ID,name 事件:B_ID、A_ID、cat_ID、日期 现在,我想获得所有用户,他们在给定时间段内更多地参与活动,并且需要根据类别添加。我正在做这样的事情:Mysql 这个sql查询可以简化吗?,mysql,Mysql,我有两张桌子。MySql 用户:A_ID,name 事件: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
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
有什么简单而专业的方法来写剧本吗
谢谢除了以下几点之外,您的查询看起来还行: 您的订单和限制应在外部选择中,否则结果的顺序不确定。 使用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
谢谢,我会试试,有没有办法用sql检查日期是否在过去一周的日期内?@SamirMemmedov:你必须先弄清楚你的周是如何定义的。这取决于你住在哪里以及你的日历遵循什么规则。不同的国家有不同的规则。您可能需要查看or函数,看看其中一个是否适合您的需要。