sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga till dynamiska rankningsrader

har
Det kommer att vara långsamt, men ett having klausul kommer att köras efter alla markeringar, ansluter, var och grupp efter har slutförts och är helt lösta.
Det enda problemet är att having använder inte ett index, medan where använder ett index.

SELECT
  ranking stuff
FROM 
  lot of tables
WHERE simple_condition
HAVING filters_that_run_last

Gör dina anslutningar tydliga
Observera att du inte behöver blanda explicita och implicita kopplingar.
Om du vill en cross join kan du använda cross join nyckelord.

    ....
    ) AS Ranking
    CROSS JOIN (SELECT @curr := null, @prev := null, @rank := 0) InitVars
WHERE
  Ranking.regional_id = 1003


  1. Django admin MySQL långsam INNER JOIN

  2. MariaDB LOCALTIMESTAMP() Förklarad

  3. Fjärranslutningar Mysql Ubuntu - bindningsadress misslyckades

  4. SQL Server Senaste versioner, upplagor och SQL Server History