我知道有simmilar问题在那里,但here`s在快速随机选择行我的实现:的MySQL选择一个随机行从两个连接表
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 2012-01-31 12:54:00
@malonso我编辑了我的文章以包含更多细节。谢谢! – Gabriel 2012-01-31 13:06:05
imageid的分布情况如何?也许所有的图像都有ID> 23111593? – bububaba 2012-01-31 13:15:47