Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment récupérer le premier et le dernier enregistrement d'un enregistrement groupé dans une requête MySQL avec des fonctions d'agrégation ?

Vous souhaitez utiliser GROUP_CONCAT et 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 

Cela évite les sous-requêtes coûteuses et je trouve cela généralement plus efficace pour ce problème particulier.

Consultez les pages de manuel des deux fonctions pour comprendre leurs arguments, ou visitez cet article qui comprend un exemple de la façon de faire conversion des délais dans MySQL pour plus d'explications.