Heim  >  Artikel  >  Datenbank  >  Wie kann ich den ersten und letzten Datensatz gruppierter Daten in MySQL effizient abrufen?

Wie kann ich den ersten und letzten Datensatz gruppierter Daten in MySQL effizient abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-08 20:26:02516Durchsuche

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

Erste und letzte Datensätze gruppierter Daten mit Aggregatfunktionen in MySQL abrufen

In MySQL gilt beim Abrufen von Daten aus gruppierten Datensätzen mithilfe von Aggregatfunktionen Es kann schwierig sein, den ersten und letzten Datensatz der Gruppe abzurufen. Obwohl dies durch mehrere Abfragen erreicht werden kann, kann es bei großen Tabellen ineffizient sein.

Um diesen Prozess zu optimieren, bietet MySQL eine effizientere Lösung mit den Funktionen GROUP_CONCAT und SUBSTRING_INDEX .

Mithilfe von GROUP_CONCAT und SUBSTRING_INDEX

Durch die gemeinsame Verwendung dieser Funktionen können Sie Werte aus der Gruppe verketten und dann den ersten und letzten Wert mit SUBSTRING_INDEX extrahieren. So funktioniert es:

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

So funktioniert es:

  • GROUP_CONCAT verkettet alle Öffnungs- oder Schließwerte in einer einzigen Zeichenfolge. sortiert nach Datum/Uhrzeit-Spalte.
  • SUBSTRING_INDEX extrahiert den ersten und letzten Wert aus der verketteten Zeichenfolge, indem er sie am Komma (',') teilt. Das Argument „1“ gibt das erste oder letzte Vorkommen an.

Beispiel:

Betrachten Sie die folgende Abfrage:

SELECT MIN(low_price), MAX(high_price),
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
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)

Dies Die Abfrage ruft effizient den ersten (offenen) und letzten (geschlossenen) Datensatz für jede Gruppe ab und minimiert so die Verarbeitungszeit für große Tabellen.

Das obige ist der detaillierte Inhalt vonWie kann ich den ersten und letzten Datensatz gruppierter Daten in MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn