web-dev-qa-db-ja.com

MySQLデータベースの主キーのインデックスを再作成するためのクエリ

MySQLに主キー列を持つテーブルがあります。

まあ言ってみれば:

ID | Value
1  | One
2  | Two
6  | Three
8  | Four
9  | Five

どうすれば次のようになりますか。

ID | Value
1  | One
2  | Two
3  | Three
4  | Four
5  | Five

他のテーブルはありません。 1つだけ。 IDを適切なシリーズにしたいと思います。

なにか提案を??おそらくクエリ.. :)

22

このクエリを記述して結果を達成する簡単な方法もあります

SET @newid=0;
UPDATE tablename SET primary_key_id=(@newid:=@newid+1) ORDER BY primary_key_id;

このクエリは、1から始まる主キーのインデックスを再作成します

47
Yogesh Suthar

私には2つの選択肢があるようです。

1)新しいテーブルを作成し、既存のデータをコピーします。

2)既存のテーブルに別の自動インクリメントフィールドを追加してから、元の列を削除します。

ALTER TABLE tableName ADD NewIdn INT NOT NULL AUTO_INCREMENT KEY
11
McGarnagle

Phpmyadminで、[A_I]ボックス([自動インクリメント]設定)のチェックを外し、[保存]をクリックしてからもう一度チェックし、もう一度[保存]をクリックしてこれを行いました。

0
jbchurchill