MYSQL - 在表中生成子集序列

时间:2009-06-01 17:26:02

标签: mysql sequence subset

我有下表

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。

可在此处找到另一个主题:Generating sequences for subsets of a table

有谁知道我怎么能在mysql中做到这一点?

谢谢你, 弗朗索瓦

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

编写一个快速脚本来执行此操作。在php中它应该少于10行代码。

答案 2 :(得分:0)

我认为你会发现this article很有用。简而言之:您无法在一个查询中执行此操作,但您可以在两个查询中执行此操作(将数据加载到新表中并执行insert语句)。