2011-11-10 7 views
-2
私は nameから Snameをコピーしたい
UPDATE `ph3`.`member` SET `name` = (select Sname from member order by rand()) 

と私はあなたが単一セットのフィールドに複数の値を渡すことはできませんSnameコピー列A列Bと並べ替え列に

+0

なぜあなたは何かが間違っていると思いますか? –

答えて

1

まず、同じテーブル(つまり、メンバー)からの選択に基づいたテーブルを更新することはできません。

列名を並べ替えるために、 のように物理的にレコードを変更する必要はありません。クエリにORDER BY句を使用するだけでなく、名前にインデックスを使用するだけです。

最後に、random()の更新コマンドに基づいて行うと、いくつかの名前が重複して重複する可能性が強く、他のものが完全に失われる可能性があります。時間。したがって、 "A"、 "B"、 "C"、 "D"、 "E"、 "F"のような名前がある場合...

あなたのrandom()は最初に "E"を返し、 1が「E」になり、「A」が消えた後、Bが処理されて「D」でランダム化され、今度は「B」が消えて「D」になります... Cの時間であり、

名前のランダムなジャングルを作成しようとしている場合は、テストテーブルに結果をコピーして、ランダムに並べ替えてから結合することをお勧めしますそれが始まる前の元のIDに新しく作成されたのと同じID番号。

1

列の順序を変更したいですこのクエリは、メンバー表から取り出され、ランダムな名前の名前フィールドを更新

UPDATE `ph3`.`member` SET `name` = (select Sname from member order by rand() LIMIT 1); 

:あなたはあなたのクエリが仕事をしたい場合はUPDATE文の、あなたはとても1つのレコードのみに結果を制限する必要があります。

+0

1093 - FROM句 – user1028916

+0

UPDATE 'ph3'で更新対象テーブル 'member'を指定することはできません。' member' '' 'name' =(select Sname order by rand()LIMIT 1) – user1028916

+0

同じ、私は気付かなかった... – aleroot