Mysql
 sql >> Database >  >> RDS >> Mysql

Come recuperare il primo e l'ultimo record di un record raggruppato in una query MySQL con funzioni aggregate?

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

Ciò evita costose sottoquery e lo trovo generalmente più efficiente per questo particolare problema.

Consulta le pagine di manuale di entrambe le funzioni per comprendere le loro argomentazioni oppure consulta questo articolo che include un esempio di come eseguire conversione timeframe in MySQL per ulteriori spiegazioni.