2011-11-10 50 views

回答

1

首先,你不應該能夠更新一個基於同一個表(即:成員)的選擇表。

至於重新排列列名,您不需要在物理上更改記錄,因爲您可以使用 僅在名稱上使用索引,此外在任何查詢期間使用ORDER BY子句。

最後,如果您根據random()的更新命令執行操作,那麼存在一些強烈的可能性,即某些名稱將超出重複範圍,而其他名稱將完全丟失......此更新在一次。所以,如果你有「A」,「B」,「C」,「D」,「E」和「F」等名稱...

而你的random()返回「E」 1成爲「E」,「A」現在消失,然後B得到處理並隨着「D」隨機排列,現在「B」消失並變成「D」... C的時間,它隨機D(例如:原來的B位置)和現在另一個「D」等...

如果你想創建一個隨機混亂的名稱,我會建議複製結果到一個測試表隨機排序,然後加入基於在開始之前與原始ID新創建的ID號相同。

1

你不能傳遞多個值到一組場更新語句,如果你希望你的查詢工作,你必須將結果限制爲僅一個記錄,因此:

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

該查詢與從成員表中檢索隨機名稱更新名稱字段。

+0

1093 - 您無法在FROM子句中指定目標表'member'進行更新FROM子句 – user1028916

+0

UPDATE'ph3'.'''' SET' name' =(選擇Sname order by rand()LIMIT 1) – user1028916

+0

ok,表格是同樣,我沒有注意到... – aleroot

相關問題