带有限制的MySQL随机选择查询返回不同数量的结果(不需要的)

时间:2013-08-10 18:11:58

标签: mysql random

我有一个名字在其中的MySQL表。我试图从表中随机顺序获取一个随机的名称列表,而不会对性能产生重大影响。我找到了一个执行此操作并已实现它的查询,但有一个缺陷...说我在数据库中有10个名字,我使用查询请求2个随机名称。我通常得到2回,但有时我只得到一回。如果我要求说9个名字,这当然会变得更糟。我会得到5,然后是下一次8,然后是9,然后是2.我相信这与脚本选择随机ID然后从那里上升有关,问题是我想要完全具有每次请求的返回的名称数量(除非数据库中没有足够的名称,在这种情况下它会返回所有名称,但是以随机顺序。)

以下是我正在使用的查询:

SELECT Name 
FROM RandomNames AS r1 
JOIN (
    SELECT (Rand() * (SELECT MAX(ID) FROM RandomNames)) AS ID
) AS r2 
WHERE r1.ID >= r2.ID 
ORDER BY r1.ID AS C 
LIMIT ?

1 个答案:

答案 0 :(得分:1)

select name from (SELECT Rand() temp, Name 
FROM RandomNames) a order by  temp  
LIMIT ?

这个怎么样?