Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql get first and last row for group data

Tags:

mysql

group-by

i have a event table,

| 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 |

i want to transfer data this structure

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

what is best way ?

like image 449
levye Avatar asked Sep 06 '25 09:09

levye


1 Answers

Without the new ID:

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

To generate a new ID use a counter:

SET @counter = 0; 
SELECT ((@counter := (@counter+1))) AS id, title, MIN(date) AS start, MAX(date) AS finish     
FROM event
GROUP BY title
like image 176
Chris Avatar answered Sep 08 '25 03:09

Chris