所以我收到一堆关于"房间"柱。我想要做的是按消息数量找到前5个房间。因此,如果过去5天内的1000条消息来自A室,500条来自B室,依此类推,我将以A,B,C,D,E形式返回结果。
我想出了如何找到所有的房间"过去5天
SELECT room
FROM messages
WHERE
timestamp < (SELECT UNIX_TIMESTAMP()*1000)
AND
timestamp > (SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 day))*1000);
但是当我尝试简单地将ORDER BY count(room);
添加到最后时,整个列表会变成一个不相关的结果(最近的消息)。
我错过了什么?
答案 0 :(得分:2)
正如M Khalid Junaid的评论所述:group by
room
列,然后按以下顺序排列:
SELECT room,count(*)
FROM messages
WHERE
timestamp < (SELECT UNIX_TIMESTAMP()*1000)
AND
timestamp > (SELECT UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 day))*1000)
group by room
order by 2 desc
limit 5;