Obawiam się, że nie mam pod ręką MariaDB, ale czy mógłbyś wypróbować poniższe, aby zobaczyć, jak są wyprowadzane zmienne użytkownika:-
SELECT *
FROM test_golf_player p
LEFT JOIN
(
SELECT pid, leaguepoints, @Sequence:=IF(@PrevPid = pid, @Sequence + 1, 0) AS aSequence, @PrevPid := pid
FROM
(
SELECT pid, leaguepoints
FROM test_golf_card
ORDER BY pid, leaguepoints DESC
) Sub1
CROSS JOIN (SELECT @PrevPid := 0, @Sequence := 0) Sub2
) gC
ON p.pid = gC.pid
ORDER BY p.name DESC
EDYTUJ — Po przeprowadzeniu dochodzenia, patrząc na Twoje wyniki, wydaje się, że MariaDB zignorowała ORDER BY w podzapytaniu. W związku z tym numer sekwencyjny jest w kolejności losowej, a także resetuje się, gdy zmienia się pid (co dzieje się losowo, ponieważ kolejność nie jest ustalona). Trochę google i wygląda na to, że jest to celowa funkcja MariaDB. Standard SQL definiuje tabelę jako nieuporządkowany zestaw wierszy, a wybór podrzędny jest traktowany jako tabela, dlatego kolejność według jest ignorowana - https://kb.askmonty.org/en/dlaczego-jest-zamówienie-z-podzapytania-z-podzapytania -ignorowane/ .
To trochę wada. Nie jestem pewien, czy jest jakieś rozwiązanie, ponieważ w tej chwili nie mogę o nim wymyślić. Myślę, że w przypadku pierwotnego problemu, z którym to miało się zmierzyć, konieczne byłoby użycie skorelowanych podrzędnych selekcji, które prawdopodobnie nie byłyby wydajne.