„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 16.11.2024
Durchsuche:217

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 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. .

Verwenden 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 geht's:

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 und Uhrzeit Column.
  • SUBSTRING_INDEX extrahiert den ersten und letzten Wert aus der verketteten Zeichenfolge, indem sie am Komma (',') geteilt wird. 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)

Diese 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3