How to fetch the first and last record of a grouped record in a MySQL query with aggregate functions?

You want to use GROUP_CONCAT and SUBSTRING_INDEX: SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ‘,’, 1 ) AS open SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ‘,’, 1 ) AS close This avoids expensive sub queries and I find it generally more efficient for this particular problem. Check out the manual pages for both … Read more