Es scheint, dass MySQL
Windows-Funktionen nicht unterstützt.
ZB das einfache: COUNT(*) OVER() AS cnt
funktioniert nicht.
Ich bin mir nicht sicher, ob dies auch für die kommerzielle Version gilt (ich gehe davon aus, dass die Community-Version eine begrenzte Teilmenge ist).
Wenn nicht, wie kann man dieses fehlende Feature umgehen?
mysql
window-functions
Cratylus
quelle
quelle
Antworten:
MySQL unterstützt keine Fensterfunktionen (*). Es gibt eine sogenannte "Fensterfunktion eines armen Mannes" in Form von GROUP_CONCAT () .
Es gibt viele Tricks
GROUP_CONCAT
, um Fensterfunktionen zu emulieren. Sie sind nicht so hübsch (syntaktisch) und manchmal zu begrenzt. Ich habe ein paar geschrieben. In meinem Blogbeitrag beschwere ich mich über die fehlenden Fensterfunktionen und verlinke auf verschiedene Lösungen basierend aufGROUP_CONCAT
.Insbesondere Auswählen bestimmter nicht aggregierter Spaltendaten in GROUP BY und SQL: Durch Auswahl der Top-N-Datensätze pro Gruppe könnte eine andere Lösung für Sie von Interesse sein und Ihnen einen Kickstart geben.
Dinge, die Sie beachten sollten
GROUP_CONCAT()
:DISTINCT
ORDER BY ... ASC/DESC
SEPARATOR
(*) Unterstützung für Fensterfunktionen wurde in MySQL 8 hinzugefügt
quelle
Es sollte wirklich beachtet werden, dass MariaDB 10.2 (veröffentlicht im Mai 2017) Fensterfunktionen hat . Dies ist sicherlich eine Möglichkeit, wenn Sie MySQL- und Fensterfunktionen benötigen.
quelle