【问题标题】:MySQL query to assign a unique random number to each rowMySQL查询为每一行分配一个唯一的随机数
【发布时间】:2010-10-10 19:37:43
【问题描述】:

我希望将一列附加到我的表中,该列将是从顺序列表 = 到行数的随机数。

所以,如果我的表格有 999 行,那么 数字 1 到 999 将被随机且唯一地分配。

现在,我想我可以添加一个虚拟 TempRandomColumn=Rand(),按此排序并使用 PHP 按顺序添加数字。但这意味着 999 条 MySQL 语句。

有没有办法使用单个 MySQL 语句来做到这一点?

感谢您的任何指点。

【问题讨论】:

    标签: mysql random


    【解决方案1】:
    SET @r := 0;
    UPDATE  items2
    SET     author_id = (@r := @r + 1)
    ORDER BY
            RAND()
    

    【讨论】:

    • 你真的可以按兰特订购吗?这对我来说似乎很奇怪,因为这是否意味着每次将它与另一行进行比较时都必须在一行上调用“rand”?
    • 它首先选择 RAND()s 作为临时值以及普通记录,然后对这些临时值进行排序。它与 SELECT * FROM (SELECT id, RAND() AS rnd FROM table) ORDER BY rnd 相同
    【解决方案2】:
    SET @i=1;
    SELECT t.*, @i:=@i+1 as RAND_NUM FROM your_table t ORDER BY RAND();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 2014-10-20
      • 2016-01-09
      • 2012-08-25
      相关资源
      最近更新 更多