0

約 2,600 行の既存の MySQL テーブルがあり、それぞれに独自の主キーがあります。

これらの主キーには、多くのランダムな値があります。それらをゼロから始まる新しい一連の数字に置き換えたいと思います。既存の行の主キーの値を変更したいことに注意してください。

これは MySQL で実行できますか?

4

2 に答える 2

2

安全な方法は、既存の列と主キーを削除して、新しい列を割り当てることです。

alter table t drop primary key, add newkey int primary key auto_increment;

これにより、自動インクリメントされた新しい主キーが追加されます。

これはSQL Fiddleで確認できます。

于 2013-07-30T00:52:17.177 に答える
2

ユーザー定義変数を使用してそれを行うことができます:

set @i := -1; -- one less than the first id value you want
update mytable set
id = (@i := @i + 1)
order by id;

これorder byにより、キーが同じ順序に保たれ、ID が更新中に衝突するのを防ぐことができます。

SQLFiddleのライブ デモを参照してください。

于 2013-07-30T02:34:41.887 に答える