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

标签 mysql sql

我有这样的数据:

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 相同,class 相同,且前一条数据的结束日期与后一条数据的开始日期相同,则取开始日期中的最小日期和结束日期中的最大日期。但是,如果前一条数据的结束日期与后一条数据的开始日期不同,则数据将正常显示。

有办法得到这个结果吗?

最佳答案

使用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/

相关文章:

c# - 我应该有重复的类属性还是创建额外的数据库表?

java - 无法从另一个docker容器连接到docker容器中的mysql

php - 显示 BLOB 数据

php - 无法使用 PDO 更新表

mysql - 如何根据特定值显示数据

SQL 查询 : how to add "sum" along with the corresponding data

mysql - UPDATE指定多个具有相同列名的表

python - 如何在 python MySQL 中使用 `SELECT` 查询来查找行是否存在?

mysql - SQL Select符号||是什么意思意思是?

sql - 如何按分区填充 BigQuery 中缺失的日期(无回填)