【问题标题】:SELECT RAND AS field while selecting other values modified by fieldSELECT RAND AS 字段,同时选择字段修改的其他值
【发布时间】:2012-08-26 10:50:58
【问题描述】:

我试图简化这一点,因此它更像是实际代码的示例。我想得到一个随机数并用它来修改几个值,但是我需要用同一个随机数来修改所有值。

我的一般 SELECT 语句类似于:

SELECT id, value1, value2

我希望每个值都乘以相同的随机数

我知道这行不通,因为那样它将使用 2 个不同的随机数:

SELECT id, value1 * FLOOR(RAND()*10), value2 * FLOOR(RAND()*10)

所以我想要这样的东西,但这是错误的,因为我不知道自己在做什么:

SELECT id, FLOOR(RAND()*10) AS rmod, value1 * rmod, value2 * rmod

我肯定需要阅读 SQL 中更高级的选择方法,也许有人可以指出我正确的方向?我认为子查询?我知道我可以在我的 PHP 代码中创建一个随机数,然后将其拼接到 SQL 命令字符串中,但我正在寻找一个仅限 SQL 的解决方案。

【问题讨论】:

    标签: mysql sql random subquery selection


    【解决方案1】:

    考虑一下:

    select @r:=rand(),@r;
    

    第一次调用 rand() 设置变量@r 可以在后续表达式中使用。在您的示例中:

    SELECT id, value1 * FLOOR(@rand:=RAND()*10), value2 * FLOOR(@rand*10)
    

    【讨论】:

    • 选择@r:=FLOOR(RAND()*10),@r;选择 id,值 1 * @r,值 2 * @r;效果很好!!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2020-10-14
    • 2013-04-13
    • 2014-06-08
    • 2014-08-17
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多