将mysql中同一表的行值与条件进行比较

将mysql中同一表的行值与条件进行比较

我有这样的数据:

header_id | class | start_date | end_date
-------------------------------------------
1         | c1    | 20-08-2019 | 22-08-2019
1         | c1    | 22-08-2019 | 24-08-2019
1         | c2    | 24-08-2019 | 27-08-2019
2         | c3    | 21-08-2019 | 22-08-2019
2         | c2    | 22-08-2019 | 25-08-2019
2         | c3    | 25-08-2019 | 26-08-2019


我想得到以下结果:

header_id | class | start_date | end_date
-------------------------------------------
1         | c1    | 20-08-2019 | 24-08-2019
1         | c2    | 24-08-2019 | 27-08-2019
2         | c3    | 21-08-2019 | 22-08-2019
2         | c2    | 22-08-2019 | 25-08-2019
2         | c3    | 25-08-2019 | 26-08-2019


如果header_id相同,类相同,并且先前数据的结束日期与之后的数据的开始日期相同,则它将从开始日期起取最小日期,在结束日期起取最大日期。但是,如果先前数据的结束日期与之后的数据的开始日期不同,则将正常显示该数据。

有没有办法得到那个结果?

最佳答案

使用group by
示例here

SELECT header_id, class, MIN(start_date), MAX(end_date) FROM your-table
GROUP BY header_id, class

关于mysql - 将mysql中同一表的行值与条件进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59640725/

10-15 21:22