sql >> Databasteknik >  >> RDS >> Mysql

Olika resultat i sqlfiddle.com 5.5.30 och MariaDB 5.5.31

Rädd att jag inte har MariaDB till hands, men kan du prova följande bara för att se hur användarvariablerna matas ut:-

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 

EDIT - När du undersöker dina resultat lite verkar det som om MariaDB har ignorerat ORDER BY i underfrågan. Följaktligen är sekvensnumret i en slumpmässig ordning, och återställs också när pid ändras (vilket det gör slumpmässigt på grund av att ordningen inte är fixerad). Lite av ett google och det verkar som att detta är en avsiktlig egenskap hos MariaDB. SQL-standarden definierar en tabell som en oordnad uppsättning rader, och ett underval behandlas som en tabell och därför ignoreras ordningen av - https://kb.askmonty.org/en/why-is-order-by-in-a-from-subquery -ignorerade/ .

Det är lite av en nackdel. Jag är inte säker på att det finns ett problem eftersom jag inte kan komma på någon just nu. För det ursprungliga problemet som detta skulle hantera tror jag att det skulle vara nödvändigt att använda korrelerade underval som förmodligen inte skulle vara effektivt.




  1. Återställ dump på fjärrmaskinen

  2. Hur ställer man in en varchar så att den har obegränsad längd?

  3. MySQL överordnade barn en fråga urval

  4. MySQL-replikering för hög tillgänglighet