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

MySQL随机选择查询,限制返回不同数量的结果(不需要),mysql,random,Mysql,Random,我有一个MySQL表,表中有名称。我试图从表中以随机顺序获得一个名称的随机列表,而不会对性能造成太大影响。我发现一个查询可以这样做,并且已经实现了它,但是有一个缺陷。。。假设我在数据库中有10个名字,我使用查询请求2个随机名字。我通常能拿回两个,但有时我只能拿回一个。如果我要回9个名字,情况当然会更糟。我会得到5,然后下次8,然后9,然后2。我相信这与脚本选择一个随机id有关,然后从那里开始,问题是我希望每次请求返回的名称的确切数量(除非数据库没有包含足够的名称,在这种情况下,它返回所有名称,但

我有一个MySQL表,表中有名称。我试图从表中以随机顺序获得一个名称的随机列表,而不会对性能造成太大影响。我发现一个查询可以这样做,并且已经实现了它,但是有一个缺陷。。。假设我在数据库中有10个名字,我使用查询请求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 ?
这个怎么样

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