Próbowałem znaleźć odpowiedź przez Internet i stwierdziłem, że dla mnie działa następująca metoda, oparta na niektórych z powyższych informacji, ale z inną metodą aktualizacji. Opublikuj tutaj, na wypadek, gdyby pomógł także innym.
Uwaga: dla mojego zestawu danych ranga jest jednorazową, stałą kalkulacją, nie zmieni się. Chciałem dodać go jako kolumnę, aby zapisać obliczenia za każdym razem, gdy pobierasz dane z MySQL do Pythona.
Rozwiązanie użyłem:
- zestaw Ranking 0 (jak wyżej)
- utworzyć tabelę tymczasową zawierający kwerendę wybierającą obliczyć rangę
- zaktualizować oryginalną tabelę z obliczonych szeregach.
nazwy Przykładowe stosowane rowid jest unikalny identyfikator dla każdego wiersza, wartość metryki, które zostaną wykorzystane do określenia rangi dla każdego wiersza
SET @rank=0;
CREATE TEMPORARY TABLE rank_temp
AS
(SELECT rowid, value, @rank:[email protected]+1 AS rank FROM source_table ORDER BY value ASC);
UPDATE sourcetable a, rank_temp b
SET a.rank = b.rank
WHERE a.rowid = b.rowid;
To prymitywny sposób, ale pracował na mój zbiór danych.
Na czym polega rzekoma kolejność? Alfabetyczny? – JNK
Nie ma znaczenia. Muszę mieć w liczbach wszystkie liczby od 1-3 (1-size) – Dejell