MYSQL - генерирующая последовательность подмножеств в таблице

StackOverflow https://stackoverflow.com/questions/935823

  •  06-09-2019
  •  | 
  •  

Вопрос

У меня есть следующая таблица

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

Я бы хотел обновить его, чтобы иметь эту таблицу.

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

Я нашел идеальную тему на SO, но она была для mssql.Я использую mysql 4.1.10.

Другую тему можно найти здесь: Генерация последовательностей для подмножеств таблицы.

Кто-нибудь знает, как я могу это сделать в mysql?

Спасибо, Жан-Франсуа

Это было полезно?

Решение

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

Другие советы

Напишите быстрый скрипт, чтобы сделать это.Это должно занять менее 10 строк кода на php.

Я думаю, ты найдешь эта статья полезный.Короче говоря:вы не можете сделать это ровно за один запрос, но вы можете сделать это за два (загрузить свои данные в новую таблицу и выполнить инструкцию insert).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top