sql >> Database >  >> RDS >> Mysql

Hoe haal ik het eerste en laatste record van een gegroepeerd record op in een MySQL-query met geaggregeerde functies?

U wilt GROUP_CONCAT . gebruiken en 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 

Dit voorkomt dure subquery's en ik vind het over het algemeen efficiënter voor dit specifieke probleem.

Bekijk de handleidingen voor beide functies om hun argumenten te begrijpen, of bezoek dit artikel dat een voorbeeld bevat van hoe u tijdsbestekconversie in MySQL voor meer uitleg.



  1. ) Operator voor beginners

  2. Dynamische SQL - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL)

  3. Analytische functies gebruiken in Oracle (Over partitie op trefwoord)

  4. SQL Server - Automatische verhoging die UPDATE-instructies mogelijk maakt