sql >> Database >  >> RDS >> Mysql

MySQL-query naar dynamische rankingrijen

hebben
Het zal langzaam zijn, maar een having clausule loopt na alle selecties, joins, waar en group by's zijn voltooid en volledig opgelost.
Het enige probleem is dat having gebruikt geen index, terwijl where maakt wel gebruik van een index.

SELECT
  ranking stuff
FROM 
  lot of tables
WHERE simple_condition
HAVING filters_that_run_last

Maak je deelname expliciet
Houd er rekening mee dat u expliciete en impliciete joins niet hoeft te mixen.
Als u wilt een cross join, kunt u de cross join . gebruiken trefwoord.

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


  1. onverwachte T_ENCAPSED_AND_WHITESPACE, verwacht T_STRING of T_VARIABLE of T_NUM_STRING fout

  2. Multithreading in MySQL?

  3. mogelijk om de queryset te filteren na het opvragen? django

  4. Upgrade MySQL naar MariaDB 10 (deel 2 – upgrade MariaDB/MySQL 5.5 naar versie 10.0)