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用でした。私はmysql4.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では10行未満のコードで済みます。

于 2009-06-01T17:32:38.437 に答える
0

この記事がお役に立てばと思います。つまり、1つのクエリで実行することはできませんが、2つのクエリで実行することはできます(データを新しいテーブルにロードし、挿入ステートメントを実行します)。

于 2009-06-01T17:33:23.693 に答える