Я изо всех сил пытался найти ответ в Интернете и обнаружил, что мне подходит следующий метод, основанный на некоторой информации выше, но с другим подходом к обновлению. Публикуйте здесь, если это поможет другим.
Примечание: для моего набора данных ранг является одноразовым фиксированным вычислением, он не изменится. Я хотел добавить его в качестве столбца, чтобы сохранить выполнение вычислений при каждом извлечении данных из MySQL в Python.
Решение, которое я использовал:
- установить ранг на 0 (как указано выше)
- создать временную таблицу, содержащую запрос на выборку для вычисления ранга
- обновить исходную таблицу с вычисленными рангами.
Используются примеры имен, rowid - уникальный идентификатор для каждой строки, значение - метрика, которая будет использоваться для определения ранга для каждой строки
SET @rank=0;
CREATE TEMPORARY TABLE rank_temp
AS
(SELECT rowid, value, @rank:=@rank+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;
Это грубый метод, но он работал с моим набором данных.