MySQL RAND()

MySQL 亂數取值

select FIELD1, FIELD2, FIELD3 from TABLE_NAME order by rand() limit 10

其中 order by rand() 表示 依據亂數、隨機排列,後面的 limit 10 是從已經隨機排列的佇列當中取出10筆。


select FIELD1, FIELD2, FIELD3 from TABLE_NAME where {條件} order by rand() limit 10
效能提高的方式是加上 where 條件以後、再隨機排列的佇列,筆數比較少的狀況下、有可能少於10筆,但此時limit 10 不會出現sql錯誤。

MySQL 的 RAND()函式 不適用大筆數的資料佇列,也有人說超過100筆的RAND()會有問題(但沒說是哪個版本MYSQL)。

或者也可以先把一固定數量資料取出後,透過 java script 函式 Math.random(); 取亂數;

或者
java.lang 套件中的 Math類別就定義了一個方法 random()。

【java 參考】
http://blog.xuite.net/x_3kkk/java/11965398
http://www.fg.tp.edu.tw/~anny/java/03_paper.doc (網路檔案下載請注意防毒)


【MySQL 語法相關參考】
http://www.desilva.biz/mysql/random.html
http://bbs.ecstart.com/viewthread.php?tid=14670&extra=page%3D1
http://dev.mysql.com/doc/refman/4.1/en/select.html

留言

這個網誌中的熱門文章

地震般的暈眩

違反道路交通管理處罰條例第53條

Who ever Finds This I Love You