我有一个名为event
的事件表。出于此问题的目的,它只有一个名为date
的字段。
以下查询返回了接下来14天每个日期发生的一些事件:
SELECT
DATE_FORMAT( ev.date, '%Y-%m-%d' ) as short_date,
count(*) as date_count
FROM event ev
WHERE ev.date >= NOW()
GROUP BY short_date
ORDER BY ev.start_date ASC
LIMIT 14
结果可能如下:
+------------+------------+
| short_date | date_count |
+------------+------------+
| 2010-03-14 | 1 |
| 2010-03-15 | 2 |
| 2010-03-16 | 9 |
| 2010-03-17 | 8 |
| 2010-03-18 | 11 |
| 2010-03-19 | 14 |
| 2010-03-20 | 13 |
| 2010-03-21 | 7 |
| 2010-03-22 | 2 |
| 2010-03-23 | 3 |
| 2010-03-24 | 3 |
| 2010-03-25 | 6 |
| 2010-03-26 | 23 |
| 2010-03-27 | 14 |
+------------+------------+
14 rows in set (0.06 sec)
假设我想按日期发布这些事件。同时我只希望一次最多显示10个。我该怎么做?
不知何故,我需要通过date_count字段的SUM限制此结果,但我不知道如何。
之前有人遇到过这个问题吗?
任何帮助将不胜感激。感谢
编辑: 我在原帖中遗忘的额外要求(关键的一个,哎呀)是我只想要整天。 即。如果限制为10,则只返回以下行:
+------------+------------+
| short_date | date_count |
+------------+------------+
| 2010-03-14 | 1 |
| 2010-03-15 | 2 |
| 2010-03-16 | 9 |
+------------+------------+
答案 0 :(得分:3)
SELECT
DATE_FORMAT( ev.date, '%Y-%m-%d' ) as short_date,
count(*) as date_count
FROM event ev
WHERE ev.date between NOW() and date_add(now(), interval 14 day)
GROUP BY date(short_date)
ORDER BY ev.start_date ASC
LIMIT 0,10
答案 1 :(得分:1)
我认为使用LIMIT 0, 10
会对你有用。