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

时间:2014-10-19 06:12:17

标签: mysql random local-variables

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

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列之间的最大数字。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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