MYSQL - создание последовательности подмножеств в таблице - PullRequest
3 голосов
/ 01 июня 2009

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

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?

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

Ответы [ 3 ]

3 голосов
/ 01 июня 2009
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;
0 голосов
/ 01 июня 2009

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

0 голосов
/ 01 июня 2009

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

...