MySQL 按事件选择第一个出现的组

标签 mysql sql

我有一个来自不同歌手的音乐事件列表,每个歌手都有不同的音乐会,我需要以这样的方式提取“下一个事件”,对于每个歌手我选择下一个事件并且仅选择下一个

例如此表

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/

相关文章:

PHP MySQL导入上传的csv错误

php - 合并两个 MySql 数据库,按日期排序,但格式不同

mysql - REDMINE - 将 MySQL 从 1.x 迁移到 3.x

sql - 具有 STUFF 和 FOR XML 路径的 T-SQL 中 WHERE 子句中的动态 LIKE

mysql - 如何在mysql中使用之间

php - 从 codeigniter 2 中的类似函数中删除引号

MySQL 获取最后 N 行并查找百分比

php - 从数据库表中选择随机用户并存储在另一个表中

mysql - MySQL 中的方括号 LIKE

php - 此查询中的 SQL 语法错误在哪里?