3

我有下表

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 中做到这一点?

谢谢你,让-弗朗索瓦

4

3 回答 3

3
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;
于 2009-06-01T17:36:20.630 回答
0

编写一个快速脚本来完成它。php.ini 中的代码应该少于 10 行。

于 2009-06-01T17:32:38.437 回答
0

我想你会发现这篇文章很有用。简而言之:您不能只在一个查询中执行此操作,但您可以在两个查询中执行此操作(将数据加载到新表中并执行插入语句)。

于 2009-06-01T17:33:23.693 回答