Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como buscar o primeiro e o último registro de um registro agrupado em uma consulta MySQL com funções agregadas?


Você deseja usar GROUP_CONCAT e 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 

Isso evita subconsultas caras e geralmente acho mais eficiente para esse problema específico.

Confira as páginas de manual de ambas as funções para entender seus argumentos ou visite este artigo que inclui um exemplo de como fazer conversão de timeframe no MySQL para mais explicações.