2011-12-31 1 views
1

私のデータベースには約23 000のレコードがあり、4921から4940まで20個の複製があります。 id列(自動インクリメント)の値が正しくありません。だから私の質問:idを4940より大きいレコードでidの列を何千ものクエリを使わずに変更する方法はありますか?MySQLには、複数の行に対してカラムの値を20ずつ簡単に減らす方法があります

編集:私はタイトルが少し曖昧であることを実現....私は今それを編集します。

+1

あなたが変更されているキーが、既に他のレコードに関連している場合、これは非常に危険である可能性があります。既存の関係を破壊する可能性があります。ユニークであることが唯一の目的であるIDフィールドにギャップがあることは悪いことではありません。 2番目のIDは、ユニークである必要がある以外のIDに意味を追加することから始まり、問題を求めています。ですから、なぜ自動インクリメント値が正しくないのですか?レコードを削除する必要がある場合、時間が経つとどうなりますか?あなたはギャップを持っているでしょうから、それらも間違っていますか? – xQbert

答えて

5

なぜこのようにしたいのか、それが重要な理由はわかりません。

これは何らかの種類の「スマートキー」ですか?

私はあなたが簡単にそれを行うことができることを想像:

UPDATE table 
SET key=key-20 
WHERE key>4940; 
+0

ありがとうございます!私のチームのデータベースタスクに対処しなければならなかったので、しばらくしていました。私はSQLでやや錆びています。ありがとうございました :) – 2kan

関連する問題