質問

私は、次の表を持っている。

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でそれを行うことができます方法を知っているでしょうか?

は、ありがとう ジャン=フランソワ

役に立ちましたか?

解決

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;

他のヒント

それを行うための迅速なスクリプトを書きます。これは、PHPでコード未満の10行を取る必要があります。

私はあなたが見つけることだと思う<のhref = "http://www.kavoir.com/2009/05/mysql-update-multiple-rows-with-one-single-query.html" のrel = "nofollowをnoreferrer ">この記事に便利。要するに:あなたは、1つのクエリでそれを行うことはできませんが、(新しい表にデータをロードし、INSERT文を実行)2でそれを行うことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top