如何選出隨機資料

利用 sql command 可以查詢指定的資料, 有時因為功能上的需要, 希望能在 web 頁面上呈現價格最低, 或是到訪最高的資料, 這種取出固定的資料順序, 往往少了一些活發性.

我們可以利用資料庫的函數特性, 讓查詢出來的結果能有不同的順序, 可以增加訪客訪問的興趣. 不過導入又十分容易的方法囉.

MS SQL Server

select * from mydata order by NEWID()

其中 NEWID() 函數, 是取出 GUID, 不過我們是利用這個函數來進行排序的打散. 如此一來, 每次查詢, 就會有不同的隨機效果

另外是 MySQL

select * from mydata order by RAND()

rand() 函數就是傳回0~1之間的亂數, 所以也是利用一樣的手法, 將 MySQL 的查詢結果回傳後, 就其實也是和上則類似的方式來達成!

雖然 MS SQL Server 也有 rand() 函數, 但是會發生使用

select * from mydata order by rand()

時, 並不會發生打散的行為, 為什麼會這樣呢? 請自行試試:

select rand(), * from mydata order by rand()

就會明白囉.

之後我會再寫一個隨機文章的plugin哦, 方便將到訪比較低的頁面也有曝光的機會.

[2006/12/15 15:08]
繼續閱讀:
http://www.petefreitag.com/item/466.cfm
http://blog.xuite.net/jameschih/java/8308864
http://blog.blueshop.com.tw/uni2tw/archive/2006/11/09/44738.aspx

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。