私は自分の問題と質問の概要を説明します。テーブルの主キーIDを作成日の順に変更する
問題:
私は、MySQLデータベースからの私の記事をエクスポートしたが、元の主キーIDを保持していませんでした。私は別のデータベースに転送し、それは混乱した。問題は、作成日の列がtable_contentsの主キーIDに基づいて順序どおりでないことです。その他の情報PKは自動的にインクリメントされます。下図を参照してください:あなたが見ることができるように
を、作成した日付はすべての年代順ではありません。今、私が作成した日付でテーブルをソートする場合:
ID年代が順番にもありません。
考えられる解決策:
私は手動でテーブル内のすべての単一の項目を編集し直すことができ、それは長い時間がかかるだろう。
私の思考:
私はSQLでの初心者ですが、私は私がやりたい書くことができますSQLクエリのどのような?私は、table_contentsのコピーを作成し、元のものとコピーしたものをマージし、作成した日付順にIDを変更しなければならないと考えていました。私はどのように正直にクエリを書くか分からない。
私の質問:
がどのようにコンテンツ作成日付列で時系列順に昇順されるように、主キーのID列を変更するクエリを書くのでしょうか?
閉鎖:
私は不明確だか、これが不可能な場合は私に教えてください。ありがとうございました!
編集:だからフィードバックからこれまでのところ、私は、クエリを書いてみました:
ALTER TABLE skwx_content;
SELECT @row_num := @row_num + 1 as newid, skwx_content.id from skwx_content , (select @row_num := 0) x order by skwx_content.created asc
ALTER TABLE skwx_content DROP PRIMARY KEY;
ADD COLUMN newid INT(10) NOT NULL AUTO_INCREMENT FIRST ORDER BY skwx_content.created ASC,
ADD PRIMARY KEY (newid);
ALTER TABLE skwx_content CHANGE newid id INT(10);
私はエラーを取得しようとしたものと:puu.sh/ohBAC/c3a8b12340.png
こんにちは、私は正しくクエリを実行していますか?私は画像に見られるようにエラーが発生します。 paramとユーザ定義の変数についてのリファレンスも私にリンクできますか? http://prntscr.com/as02qi – Roys
こんにちは、私はそれを試して、それはIDがすでにその外部キーのために存在すると言ってのエラーを与えた。 "キー 'PRIMARY'に重複するエントリ '3'。私は自分の投稿に編集を加えましたが、コードのクエリを見てください。 – Roys
こんにちは、 クエリは機能し、IDは作成された日付の順に表示されます。主キーをリセットして、以前の最大IDの代わりに1のIDで開始する方法はありますか? – Roys