mysql获取组数据的第一行和最后一行

标签 mysql group-by

我有一个事件表,

| id | title  | date       |
| 1  | party  | 2011-02-02 |
| 2  | party  | 2011-02-03 |
| 3  | party  | 2011-02-04 |
| 4  | party  | 2011-02-05 |
| 5  | brunch | 2011-05-20 |
| 6  | brunch | 2011-05-21 |
| 7  | brunch | 2011-05-22 |
| 8  | brunch | 2011-05-23 |

我想把数据传输到这个结构

| id | title  | start      | finish     |
| 1  | party  | 2011-02-02 | 2011-02-05 |
| 2  | brunch | 2011-05-20 | 2011-05-23 |

什么是最好的方法?

最佳答案

没有新ID:

SELECT title, MIN(date) AS start, MAX(date) AS finish 
FROM event
GROUP BY title

要生成新 ID,请使用计数器:

SET @counter = 0; 
SELECT ((@counter := (@counter+1))) AS id, title, MIN(date) AS start, MAX(date) AS finish     
FROM event
GROUP BY title

关于mysql获取组数据的第一行和最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342588/

相关文章:

mysql - 按高级方式分组

PHP 从 MySql 查询填充数组

sql - 分组并且在理解上有困难

c# - MySQL 服务器可以从 C# 应用程序加载数据吗?

PHP回显乱序

Mysql Group By 24小时间隔

mysql - 分组前对数据进行排序

sql - Oracle SQL - 如何对结果进行分组和聚合?

php - 使用 mysqli 检索数组

mysql - 为什么这个子查询不能返回多行?