我有以下表

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