Wygląda na to, że MySQL
nie obsługuje funkcji okna.
Np. Prosty: COUNT(*) OVER() AS cnt
nie działa.
Nie jestem pewien, czy dotyczy to również wersji komercyjnej (zakładam, że wersja społeczności ma ograniczony podzbiór).
Jeśli nie, w jaki sposób można obejść tę brakującą funkcję?
mysql
window-functions
Cratylus
źródło
źródło
Odpowiedzi:
MySQL nie obsługuje funkcji okien (*). Istnieje coś, co nazywamy „funkcją okna biedaka” w postaci GROUP_CONCAT () .
Istnieje wiele sztuczek
GROUP_CONCAT
służących do emulacji funkcji okna. Nie są tak ładne (składniowo) i czasami są zbyt ograniczone. Napisałem kilka. Zobacz mój post na blogu narzekający na brakujące funkcje okna i linki do różnych rozwiązań opartych naGROUP_CONCAT
.W szczególności, wybierając konkretne niezagregowane dane kolumn w GROUP BY i SQL: wybierając najwyższe N rekordów na grupę, inne rozwiązanie może być dla Ciebie interesujące i może dać Ci dobry start.
Rzeczy, na które należy zwrócić uwagę
GROUP_CONCAT()
:DISTINCT
ORDER BY ... ASC/DESC
SEPARATOR
(*) Dodano obsługę funkcji okien w MySQL 8
źródło
Naprawdę należy zauważyć, że MariaDB 10.2 (wydany w maju 2017 r.) Ma funkcje okien . Z pewnością jest to jedna z możliwości, jeśli potrzebujesz MySQL i funkcji okna.
źródło