MYSQL - генерирующая последовательность подмножеств в таблице
Вопрос
У меня есть следующая таблица
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).
Не связан с StackOverflow