【发布时间】:2026-01-14 16:15:02
【问题描述】:
我有一个 mySQL 业务记录集,我必须随机排序以对他们公平,以确保他们都获得相同的曝光。
我现在的问题是列表太长,所以我必须对结果进行分页。我无法将限制 LIMIT %d, %d 用于随机化记录的方式,因为它会重新随机化记录,有时会出现相同的业务。
我需要以随机顺序获取记录,然后对它们进行分页。有没有办法做到这一点?
谢谢。
SELECT *
FROM business
ORDER BY RAND( )
LIMIT 0 , 30
我知道 RAND( ) 不是随机化记录的最有效方法。以后我会改的。
【问题讨论】:
-
Google is your friend - first result 正好解决您的问题。
-
虽然这是一个非常好的方法,但值得注意的是,只要密钥存储在会话中,顺序就会保持不变。明智的做法是在用户访问第一页时重新创建密钥,以便在每个用户的基础上进行更多随机化,但如果他们继续到第 2,3 页等,他们仍然会看到所有结果
-
谢谢。我用谷歌搜索了它,但看不到任何用处。一定错过了这个
-
RAND() 不是静态数字。所以它叫 rand。