在MySQL中基于COUNT()和MONTH()检索数据

时间:2018-04-18 02:56:41

标签: mysql sql

我有userslikes个表格。后者的外键引用users表中的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()GROUP BY,但我所有的挣扎都会导致语法错误。请伸出手。

1 个答案:

答案 0 :(得分:3)

您不希望select distinct。您想要group byhaving

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'

这允许SQL引擎在timestamp上使用索引(如果有的话)。