在mysql中使用rand()选择用户定义变量的值

在mysql中使用rand()选择用户定义变量的值,mysql,random,local-variables,Mysql,Random,Local Variables,我有这样一个select查询: SELECT @imageID := imageID AS imageID, likeCount, path, `name`, description from VIEW_Select_Client_PopularImages ORDER BY RAND() LIMIT 1; SELECT @imageID; 实际上,我希望@imageID在另一个查询中使用它。但我的问题是,有时第一个select查询中的imageID与第二个select查

我有这样一个select查询:

SELECT @imageID := imageID AS imageID, likeCount, path, `name`, description 
    from VIEW_Select_Client_PopularImages 
    ORDER BY RAND() LIMIT 1; 
SELECT @imageID;
实际上,我希望@imageID在另一个查询中使用它。但我的问题是,有时第一个select查询中的imageID与第二个select查询中的@imageID不同

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


有什么想法吗?

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

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

如果要执行此操作,请尝试:

set @imageID = (SELECT imageID from VIEW_Select_Client_PopularImages order by  rand() limit 1);
然后使用第二个查询获取@imageID的其他值