我有一个像这样的选择查询:
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
列之间的最大数字。
有什么想法吗?
答案 0 :(得分:0)
是的,@ imageID将被设置为表格读取的最后一项。在大多数情况下,它按顺序添加,以便您可能获得表中最后一个imageID的ID。索引可以改变这一点。
mysql实际上为表中的每个项设置了一次@imageID,然后随机对它们进行排序并选择第一个。它必须为每一行创建一个随机数。
如果您想这样做,请尝试:
set @imageID = (SELECT imageID from VIEW_Select_Client_PopularImages order by rand() limit 1);
然后使用第二个查询来获取@imageID的其他值。