MySQL如何選擇隨機記錄?有好幾種方式呢!
在本教程中,您將學習從MySQL的資料庫表中選擇隨機記錄的各種技術方法。有時我們需要從表中選擇隨機記錄,例如:- 在部落格中選擇一些隨機帖子,並在側欄中顯示。- 在“每日報價”視窗小部件中顯示隨機報價。- 在相簿中選擇隨機圖片,並作為特色圖片。## MySQL使用ORDER BY RAND()選擇隨機記錄MySQL沒有內建語句來從資料庫表中選擇隨機記錄。為了實現這個目的,可使用RAND
函式。 以下查詢是從資料庫表中選擇一個隨機記錄:sqlSELECT *FROM tblORDER BY RAND()LIMIT 1;
讓我們詳細地看看上面的查詢語句。- RAND()
函式為表中的每一行生成一個隨機值。- ORDER BY子句按照RAND()
函式生成的隨機數對錶中的所有行進行排序。- LIMIT子句選擇隨機排序的結果集中的第一行。如果要從資料庫表中選擇N
個隨機記錄,則需要修改LIMIT
子句後指定的值,如下所示:sqlSELECT *FROM tableORDER BY RAND()LIMIT N;
例如,要在customer
表中選擇5
個隨機客戶,請使用以下查詢:sqlSELECT t.customer_id, t.customer_nameFROM studymysql.customer AS tORDER BY RAND()LIMIT 5;
執行上面的查詢語句,得到以下結果(每次執行結果都不太一樣) -
sqlSELECT ROUND(RAND() * ( SELECT MAX(id) FROM table)) as id;
我們可以使用上面查詢返回的結果集來連線表,如下所示:sqlSELECT t.*FROM table AS t JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM table )) AS id ) AS xWHERE t.id >= x.idLIMIT 1;
使用此技術方法,需要多次執行查詢以獲取多個隨機行,因為如果增加返回行數限制,查詢將只提供從隨機選擇的行開始的順序行。以下查詢是從customer
表中返回一個隨機客戶。sqlSELECT t.customer_id, t.customer_nameFROM studymysql.customer AS t JOIN (SELECT ROUND(RAND() * (SELECT MAX(customer_id) FROM studymysql.customer)) AS customer_id ) AS xWHERE t.customer_id >= x.customer_idLIMIT 1;
執行上面的查詢語句,得到以下結果 - id
列的值落在1...N
的範圍內,並且在該範圍內的值連續沒有間隙,可以使用以下技術:- 首先,在1..N
範圍內選擇隨機數。- 第二步,根據隨機數選擇行記錄。以下語句可幫助您完成此操作:sqlSELECT table. *FROM (SELECT ROUND(RAND() * (SELECT MAX(id) FROM table)) random_num, @num:=@num + 1 FROM (SELECT @num:=0) AS a, table LIMIT N) AS b, table AS tWHERE b.random_num = t.id;
請注意,使用者定義的變數是特定於連線的。所以這種技術方法不能用於連線池。此外,主鍵必須是整數型別,其值必須在值是連續沒有間隙的序列中。在本教程中,我們展示了幾種從表中選擇隨機記錄的技術方法。StudyMySQL官方QQ群(2): 41840707 歡迎各位MySQL學習和使用者加入。
相關文章
- python如何隨機選擇幾個字串並輸出Python隨機字串
- mysql 隨機查詢記錄MySql隨機
- css選擇器有哪幾種型別CSS型別
- 學習Python語言選擇哪種方式好?Python
- docker 容器如何固定ip,有幾種方式Docker
- 一個帶有權重的隨機選擇器隨機
- MySQL初步安裝後更改datadir目錄幾種方式MySql
- 幾種生成隨機數方法隨機
- AOP 有幾種實現方式?
- MySql避免重複插入記錄的幾種方法MySql
- 如何選擇元素定位方式
- 微課錄製的幾種方式:錄製微課用什麼軟體好?
- Python資料儲存方式有幾種?如何使用?Python
- 雲端計算要選擇什麼模式的呢?雲端計算又有幾種模式?模式
- 代理伺服器有幾種型別呢?伺服器型別
- 電商使用CRM系統有什麼好處,如何選擇
- MySQL 寫入壓測幾種方式MySql
- VPS主機或者雲伺服器選擇哪種好?伺服器
- sql隨機抽取記錄SQL隨機
- 隨機取表記錄隨機
- MySQL隨機選取資源MySql隨機
- 模擬與燒錄程式有哪幾種方式?(包含常用工具與使用方式)
- Java隨機數的幾種有趣用法Java隨機
- JavaScript物件的建立方式有幾種?JavaScript物件
- Mysql 檢視埠號的幾種方式MySql
- Mysql檢視埠號的幾種方式MySql
- React 的幾種條件渲染以及選擇React
- 答面試官問:如何防超賣,有幾種實現方式面試
- 為什麼轉行都會選擇Python呢?學習python有什麼好處?Python
- 幾種遠端呼叫方式,大家感覺哪種比較好?
- oracle實驗記錄 (選擇率)Oracle
- 為MySQL選擇合適的備份方式MySql
- PHP生成隨機密碼的幾種方法PHP隨機密碼
- css3實現動畫有幾種方式?CSSS3動畫
- IPTV系統有哪幾種運營方式?
- 如何選擇好的BI系統工具
- RTSP系列筆記-幾種鑑權方式筆記
- MySql資料庫備份的幾種方式MySql資料庫