2009-03-02 5 views
10

私はテーブルに、順次リストからの乱数になる列を添付したい=行の数にしたい。各行に一意の乱数を割り当てるMySQLのクエリ

だから、私のテーブルは、999行、999から1をランダムかつユニークに割り当てられる番号を持っていた場合。

ここでは、ダミーのTempRandomColumn = Rand()を追加して並べ替え、PHPを使用して数字を順番に追加できると考えました。しかし、これは999個のMySQL文を意味します。

単一のMySQLステートメントを使用してこれを行う方法はありますか?

ありがとうございます。

答えて

22
SET @r := 0; 
UPDATE items2 
SET  author_id = (@r := @r + 1) 
ORDER BY 
     RAND() 
+0

あなたが本当にランドで注文できますか?それはそれが別の行と比較するたびに「rand」と呼ばなければならないという意味ではないので、私にとっては奇妙に思えます。 –

+0

まず、RAND()を通常のレコードとともに一時値として選択し、次にこれらの一時的な値をソートします。 SELECT * FROM(SELECT id、RAND()AS rnd FROM table)と同じです。ORDER BY rnd – Quassnoi

+0

cool! +1 "zen-ness" –

関連する問題