[MySQL] 隨機取得資料表裡的資料

常用的取得欄位的方式有分為遞增和遞減,當你有沒有想過一個問題,當要亂數取得資料表裡的資料,要怎麼做呢?這個問題其實還蠻簡單的,MySQL中提供了一個rand()函式,可以讓你輕鬆取得,以下為一個實例。

若有一個資料表「test」中的欄位是這樣的內容,我們要隨機取得兩筆學生人數大於2000的學校。

idnamestudent
1國立大甲高中3200
2國立大里高中2366
3市立內湖高中2012
4國立中和高中2314
5國立板橋高中1236

那我們只要輸入以下的 SQL 語法就可以了。

SELECT * FROM `test` WHERE student>2000 order by rand() limit 2

 

如何在 MySQL 中讓欄位依中文筆畫排序?

當資料庫是使用UTF-8編碼時,若有A欄位是中文,且要依此欄位進行排序,將會造成排序可能不如預期之現象。而資料庫的編碼格式是UTF-8,因此將會依UTF-8的編碼來排序,而不會依我們所預期的Big-5來排序。而在知道原因後,要解決此問題就變得相對容易,只要在排序時,將排序的欄位轉為BIG-5就可以依筆畫排序了。而這個轉換的利器,就是「CONVERT(欄位名稱 using big5)」。

舉例來說,若有一個資料表「test」中的欄位是這樣的內容:

idname
1國立大甲高中
2國立大里高中
3市立內湖高中
4國立中和高中

如果要依「name」來遞減排序,只要用下列程式碼就可以了。

SELECT * FROM `test` WHERE 1 order by CONVERT(`name` using big5) desc