【问题标题】:How to get mysql random integer range?如何获得mysql随机整数范围?
【发布时间】:2010-11-02 08:00:27
【问题描述】:

我正在尝试为我在 1 到 60 之间选择的每一行生成一个随机整数作为计时器。

SELECT downloads.date, products.*, (FLOOR(1 + RAND() * 60)) AS timer

我已经搜索并不断提出这个 FLOOR 函数,以了解如何在一个范围内选择一个随机整数。这给了我每行 1 分。 我错过了什么?

我在 mysql 5.0.75

这是我认为可能是嵌套问题的其余查询

SELECT *
FROM (
 SELECT downloads.date, products.*, FLOOR(1 + (RAND() * 60)) AS randomtimer, 
 (
 SELECT COUNT( * )
 FROM distros
 WHERE distros.product_id = products.product_id
 ) AS distro_count,

 (SELECT COUNT(*) FROM downloads WHERE downloads.product_id = products.product_id) AS true_downloads

 FROM downloads
 INNER JOIN products ON downloads.product_id = downloads.product_id
) AS count_table
WHERE count_table.distro_count > 0
AND count_table.active = 1
ORDER BY count_table.randomtimer , count_table.date DESC LIMIT 10

【问题讨论】:

    标签: mysql random


    【解决方案1】:

    我正在运行您的查询,它确实为我提供了每一行的随机数.... 可能与随机数(计时器)的名称有关?

    【讨论】:

      【解决方案2】:

      这对我有用。你的mysql版本可能吗?

      SELECT id, (FLOOR( 1 + RAND( ) *60 )) AS timer
      FROM users
      LIMIT 0 , 30
      

      【讨论】:

      • 但是这个查询重复值
      【解决方案3】:

      RAND 函数的输出始终是介于 01 之间的值。

      试试这个:

      SELECT downloads.date, products.*, (CAST(RAND() * 60 AS UNSIGNED) + 1) AS timer
      

      【讨论】:

      • 你可以使用 floor 而不是强制转换为 int,强制转换使用 round。
      【解决方案4】:

      您可以将数字乘以表中的记录数。

      SELECT id,
      
      (FLOOR( (SELECT MIN(id)                        FROM  your_table ) + RAND( ) * 1000000 ) ) AS timer
      FROM your_table
      LIMIT 0 , 30
      

      【讨论】:

        【解决方案5】:

        老问题,但始终是实际问题。

        这里有一种创建MySQL函数的方法random_integer()based on manual

        CREATE FUNCTION random_integer(value_minimum INT, value_maximum INT)
        RETURNS INT
        COMMENT 'Gets a random integer between value_minimum and value_maximum, bounds included'
        RETURN FLOOR(value_minimum + RAND() * (value_maximum - value_minimum + 1));
        
        SELECT ALL random_integer(1, 60) AS timer;
        

        【讨论】:

          猜你喜欢
          • 2021-09-21
          • 2019-04-08
          • 2011-08-30
          • 2021-12-31
          • 1970-01-01
          • 2015-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多