About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

MySQL 隨機查詢 & 隨機機率問題

FUNction 於 2008年2月1日 上午10:24 發表
本要用SQL 語法隨機找出幾筆資料,但是後來因為我要的邏輯太複雜了,所以我後來放棄用這招,我以下介紹在網路上找到的一些方法:

隨機選出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() 來完成我要的需求。 Tags: , , ,

讀者回應 ( 0 意見 )

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^