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