我有一个来自不同歌手的音乐事件列表,每个歌手都有不同的音乐会,我需要以这样的方式提取“下一个事件”,对于每个歌手我选择下一个事件并且仅选择下一个
例如此表
id | singerId | occurrence
1 | 1 | 2017-01-01
2 | 1 | 2017-02-01
3 | 2 | 2017-03-01
4 | 2 | 2017-04-01
结果应该是
id | singerId | occurrence
1 | 1 | 2017-01-01
3 | 2 | 2017-03-01
我尝试过
select distinct * from table
where occurrence > '2016-12-12 22:10:00'
group by singerId
order by occurrence
但不知何故,我在所有情况下都没有得到下一个事件,有时一个事件是中间的一个,而不是下一个
'next' 是最接近 2016-12-12 22:10:00 且大于它的
我的查询有什么问题?
最佳答案
根据你所说的,试试这个。 “下次出现”的定义非常模糊。
select id, singerId, Min(Occurrence) Occurrence
from table
where occurrence > '2016-12-12 22:10:00'
group by id, singerId
order by occurrence
关于MySQL 按事件选择第一个出现的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41452082/