【发布时间】:2020-09-22 04:49:00
【问题描述】:
我想在 MySQL 中创建一个存储过程,但首先,我想获得正确的查询。但是,我一直遇到的问题是,我似乎无法从查询中获取与我返回的 DateTime 标记相对应的正确 id。
这是我试图从中获取结果的表:
id EventId start end
1 1 2019-04-05 00:00:00 2019-04-07 00:00:00
2 2 2020-04-03 00:00:00 2020-04-03 00:00:00
3 3 2020-04-02 00:00:00 2020-04-02 00:00:00
7 1 2020-06-11 00:00:00 2020-06-11 00:00:00
9 2 2020-06-18 00:00:00 2020-06-18 00:00:00
10 3 2020-06-11 00:00:00 2020-06-11 00:00:00
11 3 2020-06-07 00:00:00 2020-06-07 00:00:00
查询:
SELECT DISTINCT Eventid, MIN(start), id
from date_planning
WHERE `start` >= NOW()
GROUP BY Eventid
这给了我以下结果
EventId Min(start) id
1 2020-06-11 00:00:00 3
2 2020-06-18 00:00:00 9
3 2020-06-07 00:00:00 10
但这些是属于这些日期时间的正确 id:
EventId Min(start) id
1 2020-06-11 00:00:00 7
2 2020-06-18 00:00:00 9
3 2020-06-07 00:00:00 11
【问题讨论】:
-
您通常
GROUP BY与您SELECT相同的列,除了那些是设置函数的参数的列。除非在兼容模式下,否则您的查询将在较新的 MySQL 版本中引发异常。 -
但是,当前的 MySQL 有窗口函数。检查出来。
标签: mysql sql date greatest-n-per-group