Mysql
 sql >> база данни >  >> RDS >> Mysql

Различни резултати в sqlfiddle.com 5.5.30 и MariaDB 5.5.31

Страхувам се, че нямам MariaDB под ръка, но бихте ли опитали следното, само за да видите как се извеждат потребителските променливи:-

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 

РЕДАКТИРАНЕ - Правейки малко разследване, гледайки вашите резултати, изглежда, че MariaDB е игнорирала ORDER BY в подзаявката. Следователно поредният номер е в произволен ред и също така се нулира, когато pid се промени (което прави произволно, тъй като редът не е фиксиран). Малко гугъл и изглежда, че това е умишлена характеристика на MariaDB. Стандартът на SQL дефинира таблица като неподреден набор от редове, а подизборът се третира като таблица, следователно редът от се игнорира - https://kb.askmonty.org/en/why-is-order-by-in-a-from-subquery -игнорирано/ .

Това е малко недостатък. Не съм сигурен, че има работа, тъй като в момента не се сещам за такава. За първоначалния проблем, с който трябваше да се справим, мисля, че би било необходимо да се използват корелирани подизбори, които вероятно няма да бъдат ефективни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите вмъкната стойност за тригера

  2. MySQL правилният синтаксис за използване близо до '' при грешка на ред 1

  3. Django:sqlite за dev, mysql за prod?

  4. Как мога да използвам Entity Framework върху обектна графика след дълбочина 2 с MySQL Connector / NET?

  5. Обвързване на адрес и MySQL сървър