【问题标题】:Select the value of user-defined variables with rand() in mysqlmysql中用rand()选择用户自定义变量的值
【发布时间】:2014-10-19 06:12:16
【问题描述】:

我有一个这样的选择查询:

SELECT @imageID := imageID AS imageID, likeCount, path, `name`, description 
    from VIEW_Select_Client_PopularImages 
    ORDER BY RAND() LIMIT 1; 
SELECT @imageID;

实际上我希望@imageID 在另一个查询中使用它。但我的问题是,有时第一个选择查询中的imageID 与第二个选择查询中的@imageID 不同!

不确定,但在我的所有测试中,@imageID 是所有 imageIDs 列之间的最大数字。

有什么想法吗?

【问题讨论】:

    标签: mysql random local-variables


    【解决方案1】:

    是的,@imageID 将设置为表格读取的最后一项。在大多数情况下,它们是按添加顺序进行的,因此您可能会获得表中最后一个 imageID 的 ID。索引可以改变这一点。

    mysql 实际上为表中的每个项目设置一次@imageID,然后随机排序并选择第一个。它必须为每一行创建一个随机数。

    如果您想这样做,请尝试:

    set @imageID = (SELECT imageID from VIEW_Select_Client_PopularImages order by  rand() limit 1);
    

    然后使用第二个查询来获取@imageID 的其他值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 2013-04-25
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多