web-dev-qa-db-ja.com

mysqlで値を段階的に更新する

テーブルのフィールドの1つのフィールドがすべての行で0に設定されています。しかし、更新クエリのステップ1で増分値に更新したいと思います。

どうすればmysqlでそれを行うことができますか?

43
hd.

これを試して:

mysql> select @i := 0;
mysql> update bar set c = (select @i := @i + 1);
102
SET @a = 0;  
UPDATE customers SET id = @a:=@a+1;

あなたもこれのために行くことができます。

11
DRUPWAY

1つの方法は、元の列ではなくAUTO_INCREMENT列を持つ新しいテーブルを作成し、古いデータをすべて新しいテーブルに挿入してから、新しい名前を変更して古いテーブルを削除することです。

別の方法は、(他のDBMSシステムにあるROW_NUMBER()関数をエミュレートするために)行ごとに増加する数を生成する MySQL変数 を使用して更新クエリを実行することです。

3
thomaspaulb