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
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
留言