我想从mysql表中获取随机记录。我知道我们可以使用rand()获取顺序,但它似乎是大字段的缓慢过程。我们可以通过其他方式获取rand记录。
答案 0 :(得分:2)
如果您有一些主键Id
,则可以在MIN(Id)
和MAX(Id)
之间选择一个随机数并获取该项。如果具有该Id
的项目不存在,只需再试一次。
答案 1 :(得分:2)
你可以先获得兰特偏移量
SELECT FLOOR(RAND() * COUNT(*)) AS rnd FROM your_table
然后使用偏移量选择记录。
答案 2 :(得分:1)
SELECT name
FROM random JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id
) AS r2
USING (id);
您的问题已经在这里得到解答:
答案 3 :(得分:0)
你可以试试这个:
SELECT * FROM table
join
(select round(rand()*(select max(id) from table)) as val from table) as rnd
on rnd.val=table.id;