Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL do dynamicznych wierszy rankingu

posiadać
Będzie powolny, ale having klauzula zostanie uruchomiona po wszystkie wybory, łączenia, miejsca i grupy według zostały zakończone i w pełni rozwiązane.
Jedynym problemem jest to, że having nie używa indeksu, podczas gdy where używa indeksu.

SELECT
  ranking stuff
FROM 
  lot of tables
WHERE simple_condition
HAVING filters_that_run_last

Spraw, by Twoje połączenia były wyraźne
Pamiętaj, że nie musisz mieszać sprzężeń jawnych i niejawnych.
Jeśli chcesz sprzężenia krzyżowego, możesz użyć cross join słowo kluczowe.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak powiązać wartości INSERT INTO mysql perl

  2. Błąd podczas konfigurowania hibernacji 5.0.1 i MySQL

  3. przywróć kopię zapasową mysql

  4. Jak mogę spowolnić zrzut MySQL, aby nie wpływać na bieżące obciążenie serwera?

  5. Grupuj według klauzuli w mySQL i postgreSQL, skąd błąd w postgreSQL?