隨機選出n筆資料:
SELECT *
FROM table_name AS r1 JOIN
(SELECT ROUND(RAND() * (SELECT MAX(id)FROM table_name)) AS id) AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT n;
據說這樣的效率會比以下語法快四倍
SELECT * FROM table_name WHERE id> RAND()*(SELECT MAX(id) FROM table_name) LIMIT n
接下來這是一個有趣的問題:
table1 有個欄位weight 記錄0~5的整數,要從表中雖機SELECT 出8條記錄,要求weight值越高的,被SELECT 出來的機率越高
我就不貼語法了,直接貼討論串 http://topic.csdn.net/u/20071025/18/a0a72218-5554-4531-b20c-1a82d34eed13.html
參考資料:
http://www.viatop.cn/blog/show-290-1.htm
http://www.pconline.com.cn/pcedu/empolder/db/mysql/0509/697526.html
順帶一提:
我想要的是可以從特定限制內找出隨機幾筆資料,後來我打算用PHP 的rand() 搭配 mysql_data_seek() 來完成我要的需求。
讀者回應 ( 0 意見 )
訂閱張貼留言 (Atom)
張貼留言
如果沒有帳戶,建議使用「名稱/網址」留言喔^^