我尝试更新我的MySQL表列,并设置随机序列号,从1,2,3等开始。例如,我总共有38行,所以我需要用1-38号更新它(不能复制)。 我尝试使用:
UPDATE TABLE SET VALUE=FLOOR(RAND()*38)+1
但是它给了我一些重复的数字,我需要每一行都有不同的数字。
答案 0 :(得分:3)
您可以尝试这样的事情:
SET @r := 0;
UPDATE table
SET value = (@r := @r + 1)
ORDER BY
RAND();
这将分配数字1至38将被随机和唯一地分配。
希望这有帮助!!!
答案 1 :(得分:1)
可能不完全是您想要的,但是如果您希望从1开始为您的表分配唯一ID,那么架构上的好解决方案就是让您的'id'列成为自动递增的唯一编号:
ALTER TABLE TABLE_NAME ADD COLUMN_NAME INT PRIMARY KEY AUTO_INCREMENT;
如果您已经拥有该列,则可以先将其删除:
ALTER TABLE TABLE_NAME DROP COLUMN_NAME
答案 2 :(得分:0)
只是示例代码:
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
}
答案 3 :(得分:0)
如果你只想在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>