【发布时间】:2015-02-09 22:31:01
【问题描述】:
取下表:
id - member_id - day
0 1 1
1 1 1
2 1 2
3 2 2
4 1 3
5 2 3
6 2 3
7 1 3
8 1 3
9 2 3
假设我想做类似的事情:
SELECT `day`,
COUNT(`id`) AS `count`
FROM `table`
WHERE `member_id` = 1
GROUP BY `day`
ORDER BY `day` DESC
LIMIT 5
我期望得到如下结果:
day - count
3 3
2 1
1 1
请注意第 1 天的计数是如何减半的,因为只有该成员最近的五行被分组。相反,我得到了按天排序的最后五个组。
如何使用 WHERE 条件仅对最近的 n 行进行分组?
实际上,我想使用 WHERE,然后是 LIMIT,然后才使用 GROUP。
【问题讨论】:
-
您正在从查询中选择日期。这就是我所知道的。
-
我不太明白,你知道
HAVING子句吗? -
@LuisSiquot 我不明白
HAVING是如何让我获得给定成员的最新n行的......?
标签: mysql sql group-by mariadb