【问题标题】:mysql update random a column (fast)mysql 随机更新一列(快)
【发布时间】:2018-12-17 11:45:29
【问题描述】:

如何随机更新表格。所以你给一列一个随机值。并且列(例如“顶部”)是唯一的。如果您在数字 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

我为 PHP 使用 Mysql PDO 库。

【问题讨论】:

  • 不要在 MySQL 中这样做,使用适当的编程语言来生成这些数字。仅对更新部分使用 sql。
  • 但是如果我使用 PHP 会很慢。
  • 你的 MySQL 版本是多少?
  • 我的mysql版本是5.7.22
  • 看看它是否适用于您的 mysql 版本并告诉我,以便我将其添加为答案:sqlfiddle.com/#!9/053eb0/4

标签: php mysql sql random sql-update


【解决方案1】:

如果你只是想给行任意分配一个序号,你可以使用变量:

set @rn := 0;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多