sql >> Database teknologi >  >> RDS >> Mysql

MySQL-forespørgsel til dynamiske rangeringsrækker

har
Det vil være langsomt, men en having klausul vil køre efter alle udvælgelser, joins, hvor og grupper efter er afsluttet og er fuldt løst.
Det eneste problem er, at having bruger ikke et indeks, mens where bruger et indeks.

SELECT
  ranking stuff
FROM 
  lot of tables
WHERE simple_condition
HAVING filters_that_run_last

Gør dine joinforbindelser eksplicitte
Bemærk, at du ikke behøver at blande eksplicitte og implicitte joinforbindelser.
Hvis du ønsker en cross join, kan du bruge cross join søgeord.

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


  1. Sådan opretter du et sikkert login-script i PHP og MySQL

  2. MySQL LIKE begrænsende

  3. Tabelfiltrering i IRI Workbench

  4. flytte tabel fra et skema til et andet skema?