2012-01-14 11 views
-1

100K行のMySql 5.3テーブルには主キーがあります。mysqlカラムを自動的にインクリメントしてテーブルを更新する方法

また、キーの一部ではない整数列もあります。この列をテーブルの一意の番号を含むように更新したいと思います。例えば。最初のレコードには2番目の2などのために1を含める必要があります。

これは自動インクリメント列でもかまいませんが、MySqlではキー以外の列の自動インクリメントは許可されません。私は、この列がファイルなどから人身が侵入する方法のために、キーの一部であることを望んでいません。

このようなクエリはどのように見えるでしょうか?

+1

-1。挿入された行数に基づいてシーケンスを表す一意のキーが必要ですが、これは主キーではありませんか?あなたはデータベースで何をしているのですか? – jmkeyes

+0

まず、ロードされたレコードの順序を保存する(外部データベースから)。第二に、スペースを節約する。元の主キーは長く、このテーブルへの参照が多数あります。だから各リファレンスでいくつかのキー列を繰り返す代わりに、私は単に列に作成し、参照でそれを使用します。インポートされた他のテーブルの中には、すでに長い主キーを使用して参照しているものがあります。 – camcam

+0

テーブルの特定の行を参照したいのですか?主キーの機能を複製するための新しい列を作成するのではなく、主キーのみを参照するのはなぜですか? – jmkeyes

答えて

5

あなたはこのような何かをしたいか、なぜ私は知りませんが、可能な解決策はこれです:

set @rownum:=0; 
update <table> set column = @rownum:=rownum+1 order by <field> 
+2

ありがとう! @ umum:= @ rownum + 1は、SET句のLOAD DATA INFILEで直接使用することもできます – camcam

関連する問題