这应该能够返回一个随机的帖子ID。它也被称为使用MySQL的最快方法。
SELECT t.id
FROM table t
JOIN (SELECT(FLOOR(max(id) * rand())) AS maxid FROM table)
AS tt
ON t.id >= tt.maxid
LIMIT 1
似乎无法绕过这个,请帮忙。
答案 0 :(得分:2)
您使用“已加入的表格”从表中选择一个随机ID号
SELECT(FLOOR(max(id) * rand())) AS maxid FROM table
如果id中没有空洞(连续整数),这将只返回你可以使用的东西。 这就是你加入这个
的原因 ON t.id >= tt.maxid
您将获得比随机数更高的所有ID。然后限制就是第一个。
举个例子:假设你在表格中有这些条目: 1,2,5,7,8。
被覆盖的随机数将小于8,例如3.你加入会给你5,7和8但由于限制只返回5
答案 1 :(得分:0)
首先,格式化帮助
1. SELECT t.id
2. FROM table t
3. JOIN (SELECT(FLOOR(max(id) * rand())) AS maxid FROM table) AS tt
4. ON t.id >= tt.maxid
5. LIMIT 1
让我们首先看一下JOIN中的子查询:
id
的最大值因此,子查询将返回中的随机整数(由于FLOOR)数字 范围[0,1]
“LIMIT 1”表示您的查询只返回结果集中的一行。
希望这足够了。随意询问更多细节