2009-06-01 25 views
3

生成子序列我有如下表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。

另一個線程可以在這裏找到:Generating sequences for subsets of a table

有誰知道我該怎麼做,在MySQL的?

謝謝 讓 - 弗朗索瓦·

回答

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; 
+0

嗨,我試過並測試你的答案,它不起作用。這裏是我在上面得到的例子的價值。 1,1,3 1,2,12 1,3,67 2,1,7 2,2,99 5,3,1 5,4,4 5,5,12 5 ,6,30 5,7,33 5,8,87 我一直在用它工作了大約20分鐘,但我似乎並沒有得到它的工作。這個想法似乎很棒,但我認爲它可以奏效。 如果您有任何想法,請隨時添加更多信息。 – 2009-06-01 20:07:50

0

寫快速腳本來做到這一點。它應該在PHP中使用少於10行的代碼。

0

我想你會發現this article有用。簡而言之:你不能只用一個查詢來完成,但你可以用兩個來完成(將你的數據加載到一個新表中並執行一條插入語句)。