【发布时间】:2012-01-31 12:49:53
【问题描述】:
我知道那里有类似的问题,但这是我在快速随机选择行上的实现:
SELECT i.id, i.thumb_img, i.af, i.width, i.height
FROM images_detail id
JOIN images AS i ON id.imageid = i.id
WHERE id.imageid >=1
AND id.newsroom =1
AND i.width > i.height
AND id.imageid >= FLOOR( 1 + RAND( ) *23111593 )
LIMIT 1
这个查询的问题是id.imageid >= FLOOR( 1 + RAND( ) *23111593 )中的RANDOM表达式无关紧要,它总是返回相同的ID,为什么?
请问有什么帮助吗?
后期编辑:
查询耗时 0.0005 秒,使用 EXPLAIN,它报告返回 USING WHERE 和 12993 ROWS 返回
ID 是自动递增的,它不是 23111593,因为 RAND() 返回 0.xxxxx 所以 RAND()*23111593,返回大约 12993 行。问题是,相同的 ID 在顶部,我不想调用 ORDER BY 子句。
【问题讨论】:
-
去掉 where 子句的限制和 RAND 部分返回多少个结果?
-
@malonso 我已经编辑了我的帖子以包含更多详细信息。谢谢!
-
imageid的分布情况如何?也许所有图像的 id > 23111593?
-
@bububaba Id
s are auto-incremented, its 不是 23111593,因为 RAND() 返回 0.xxxxx 所以 RAND()*23111593,返回大约 12993 行。问题是,相同的 ID 在顶部,我不想调用 ORDER BY 子句。