mysql随机更新一列(fast)

9rbhqvlz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(428)

如何随机更新表。所以给一列一个随机值。列(在示例“top”中)是唯一的。如果你选择10到20之间的数字,你有10行,你不能有一个数字没有使用。如果你有

Test table
-Id-    -Top-
0        0
1        0
2        0
3        0

随机更改列“top”(1到4)

Test table
-Id-    -Top-
0        4
1        1
2        3
3        2

如果我使用php,它是非常慢的。但是mysql很快。我不使用select,因为我还需要保存答案。有人能帮我吗?谢谢。
mysql:5.7.22版本
php:7.2.7版本
我将mysql pdo lib用于php。

62lalag4

62lalag41#

如果您只想为行任意分配一个序列号,可以使用变量:

set @rn := 0;

update t
    set top = (@rn := @rn + 1)
    order by rand();

作业看起来是顺序的,但是 order by rand() 意味着值被插入到随机行中。所有的数字都是唯一的,因为它们是连续的。

相关问题