我想从 mysql 表中随机获取记录。我知道我们可以通过 rand() 使用 order 来获取,但对于大字段来说,这似乎是一个缓慢的过程。我们可以用其他方法来获取 rand 记录吗?
问问题
90 次
4 回答
2
如果您有一些主键Id
,您可以在 和 之间选择一个随机数MIN(Id)
并MAX(Id)
获取该项目。Id
如果该项目不存在,只需再试一次。
于 2012-08-09T06:50:05.027 回答
2
你可以先得到一个兰特抵消
SELECT FLOOR(RAND() * COUNT(*)) AS rnd FROM your_table
然后使用偏移量选择一条记录。
于 2012-08-09T06:52:34.400 回答
1
SELECT name
FROM random JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id
) AS r2
USING (id);
您的问题已经在这里得到解答:
于 2012-08-09T06:52:03.620 回答
0
你可以试试这个:
SELECT * FROM table
join
(select round(rand()*(select max(id) from table)) as val from table) as rnd
on rnd.val=table.id;
于 2012-08-09T06:52:04.227 回答