mysql更新随机列(快速)

时间:2018-07-09 18:01:06

标签: php mysql sql random sql-update

如何随机更新表。因此,您可以为列指定一个随机值。并且该列(在示例中为“顶部”)是唯一的。而且,如果您在10到20的数字之间进行选择,并且有10行,那么您就不会有未使用的数字。如果有

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

随机更改“顶部”列(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。

1 个答案:

答案 0 :(得分:1)

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

set @rn := 0;

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

赋值看起来是顺序的,但是order by rand()表示将值插入随机行中。所有数字都是唯一的,因为它们是连续的。