[英]How to update my MySQL table column with unique random sequence number?
我嘗試更新我的MySQL表列,並設置隨機序號,從1,2,3等開始。 例如,我總共有38行,所以我需要用數字1-38更新它(不能重復)。 我嘗試使用:
UPDATE TABLE SET VALUE=FLOOR(RAND()*38)+1
但這給了我一些重復的數字,我需要每一行都有不同的數字。
您可以嘗試如下操作:
SET @r := 0;
UPDATE table
SET value = (@r := @r + 1)
ORDER BY
RAND();
這將分配1到38的數字,這些數字將隨機且唯一地分配。
希望這可以幫助!!!
可能不完全是您想要的,但是如果您希望為表分配從1開始的唯一ID,那么架構上好的解決方案就是將“ id”列設為自動遞增的唯一編號:
ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT PRIMARY KEY AUTO_INCREMENT;
如果您已經有了該列,則可以先前將其刪除:
ALTER TABLE TABLE_NAME DROP COLUMN_NAME
只是示例代碼:
for($i=1;$i<=38;$i++)
{
$arr[$i] = $i;
}
shuffle($arr);
foreach($arr as $randarray)
{
//Your SQL query here UPDATE TABLE SET VALUE=$randarray like that
}
如果僅在MySQL中需要解決方案,則需要這樣的內容:
update test set id = (select MAX(id)+1 from test) WHERE <your_condition>
但是你會得到錯誤:
You can't specify target table 'test' for update in FROM clause
因此,您必須執行類似的操作以避免此錯誤:
update test set
id = (
select maxPlus1 from
(
select MAX(id)+1 as maxPlus1
from test
)
maxTable
) WHERE <your_condition>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.