我知道有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