我有下表
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中做到这一点?
谢谢你, 弗朗索瓦
答案 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语句)。