Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie rufe ich den ersten und letzten Datensatz eines gruppierten Datensatzes in einer MySQL-Abfrage mit Aggregatfunktionen ab?

Sie möchten GROUP_CONCAT verwenden und 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 

Dies vermeidet teure Unterabfragen und ich finde es im Allgemeinen effizienter für dieses spezielle Problem.

Sehen Sie sich die Handbuchseiten für beide Funktionen an, um ihre Argumente zu verstehen, oder besuchen Sie diesen Artikel, der ein Beispiel enthält, wie man Zeitrahmenkonvertierung in MySQL für weitere Erklärungen.