Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中基于COUNT()和MONTH()检索数据_Mysql_Sql - Fatal编程技术网

在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());承诺