使用MySQL,Group by获取特定数据

时间:2015-09-18 22:26:02

标签: php mysql sql

我想在最近1天内获取最常输入的数据。

这是我的代码:

SELECT tag_id, time, 
COUNT(tag_id) AS value_occurrence  
FROM   tag_rel 
GROUP BY tag_id 
HAVING time > '$yesterday' 
ORDER BY value_occurrence DESC LIMIT 10

代码正在运行但有问题:

我想在7月22日到23日之间休息。

id| tag_id     | time       |
1 | football   | 22,5 july  |  
2 | basketball | 22,5 july  |  
3 | football   |  22,5 july |  
4 | football   |  21 july   | 

我想先前三行按频率排序。

例如: 1-足球 2-篮球

但是我的代码没有采取"足球"。它只是显示"篮球"。因为另外"足球"时间值小于7月22日。

怎么解决呢?

1 个答案:

答案 0 :(得分:1)

正确查询您想要的内容会使用where,而不是having

SELECT tag_id, MAX(time) as maxtime, 
       COUNT(tag_id) AS value_occurrence  
FROM   tag_rel 
WHERE time > '$yesterday' 
GROUP BY tag_id 
ORDER BY value_occurrence DESC
LIMIT 10;

否则,timeselect子句中都有having使用的任意值。