0

我有一个带有名称的 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 ?
4

1 回答 1

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

这个怎么样?

于 2013-08-10T18:14:57.397 回答