Подтвердить что ты не робот

Обновление столбцов с порядковым номером mysql

У меня есть таблица со столбцами: (это всего лишь пример, у меня 50K записей)

Name,   Number

Joe     Null
Michael Null
Moses   Null

Я обновляю номер с порядковым номером от 1-3, чтобы он выглядел следующим образом:

Name,   Number

Joe     1
Michael 2
Moses   3

Как я могу сделать это в SQL для Mysql в одной команде SQL

4b9b3361

Ответ 2

Я изо всех сил пытался найти ответ онлайн и нашел для меня следующий метод, основанный на некоторой информации выше, но с другим подходом к обновлению. Проводка здесь, если она помогает другим.

Примечание: для моего набора данных ранг является одноразовым фиксированным вычислением, он не изменится. Я хотел бы добавить его в качестве столбца, чтобы сохранить выполнение вычислений каждый раз, когда я извлекаю данные из MySQL в Python.

Решение, которое я использовал:

  • установить ранг 0 (как указано выше)
  • создать временную таблицу, содержащую запрос select для вычисления ранга
  • обновить исходную таблицу с помощью вычисляемых рангов.

Используемые имена образцов, rowid - уникальный идентификатор для каждой строки, значение - это метрика, которая будет использоваться для определения ранга для каждой строки

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;

Это грубый метод, но он работал над моим набором данных.

Ответ 3

Вы можете попробовать установить Number в AUTO_INCREMENT, чтобы числа были сгенерированы:

ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT

Кроме этого, вам, вероятно, понадобится: а) хранимые процедуры b) код приложения