在MySQL中基于COUNT()和MONTH()检索数据
我有在MySQL中基于COUNT()和MONTH()检索数据,mysql,sql,Mysql,Sql,我有用户和喜欢表格。后者的外键引用用户表中的id。手头的任务是在2018年3月检索所有喜欢超过100的不同用户。我试图从类型为TIMESTAMP 我想到的只是,在那个时期,几乎所有人都有自己的爱好: SELECT DISTINCT u.name FROM users AS u JOIN likes AS l ON u.id = l.user_id WHERE MONTH(l.timestamp) = 3 AND YEAR(l.timestamp) = 2018; 我想我必须以某种方式使用C
用户
和喜欢
表格。后者的外键引用用户
表中的id。手头的任务是在2018年3月检索所有喜欢超过100的不同用户。我试图从类型为TIMESTAMP
我想到的只是,在那个时期,几乎所有人都有自己的爱好:
SELECT DISTINCT u.name
FROM users AS u
JOIN likes AS l ON u.id = l.user_id
WHERE MONTH(l.timestamp) = 3 AND YEAR(l.timestamp) = 2018;
我想我必须以某种方式使用
COUNT()
和groupby
,但我所有的努力都导致了语法错误。请帮忙。您不想选择distinct
。您希望按
分组,并且具有
:
SELECT u.name
FROM users u JOIN
likes l
ON u.id = l.user_id
WHERE MONTH(l.timestamp) = 3 AND YEAR(l.timestamp) = 2018
GROUP BY u.name
HAVING COUNT(*) > 100;
老实说,最好将WHERE
子句写为:
WHERE l.timestamp >= '2018-03-01' AND l.timestamp < '2018-04-01'
其中l.timestamp>='2018-03-01'和l.timestamp<'2018-04-01'
这允许SQL引擎在
时间戳
上使用索引(如果可用)。您不希望选择distinct
。您希望按
分组,并且具有
:
SELECT u.name
FROM users u JOIN
likes l
ON u.id = l.user_id
WHERE MONTH(l.timestamp) = 3 AND YEAR(l.timestamp) = 2018
GROUP BY u.name
HAVING COUNT(*) > 100;
老实说,最好将WHERE
子句写为:
WHERE l.timestamp >= '2018-03-01' AND l.timestamp < '2018-04-01'
其中l.timestamp>='2018-03-01'和l.timestamp<'2018-04-01'
这允许SQL引擎在
时间戳上使用索引(如果可用)。对于喜欢次数超过100次的用户,其计数(*)超过100次。或者,插入likes(user_id,timestamp)值('Gordon Linoff',NOW());承诺代码>对于拥有100个以上喜好的需求用户,拥有count(*)>100
。或者,插入likes(user_id,timestamp)值('Gordon Linoff',NOW());承诺代码>