MySQL 如何從表中取出隨機資料

2021-04-17 07:14:35 字數 779 閱讀 5784

以前在群裡討論過這個問題,比較的有意思.mysql的語法真好玩.他們原來都想用php的實現隨機,但取出多條好像要進行兩次以上查詢.翻了手冊,找到了下面這個語句,可以完成任務了

select * from table_name order by rand() limit 5;

rand在手冊裡是這麼說的:

rand() 

rand(n) 

返回在範圍0到1.0內的隨機浮點值。如果乙個整數引數n被指定,它被用作種子值。 

mysql> select rand();

-> 0.5925

mysql> select rand(20);

-> 0.1811

mysql> select rand(20);

-> 0.1811

mysql> select rand();

-> 0.2079

mysql> select rand();

-> 0.7888

你不能在乙個order by子句用rand()值使用列,因為order by將重複計算列多次。然而在mysql3.23中,你可以做: select * from table_name order by rand(),這是有利於得到乙個來自select * from table1,table2 where a=b and c= r2.id 

order by r1.id asc 

limit 5;

執行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支援這樣的子查詢.

MySQL 如何從表中取出隨機資料

select from table name order by rand limit 5 rand在手冊裡是這麼說的 rand rand n 返回在範圍0到1.0內的隨機浮點值。如果乙個整數引數n被指定,它被用作種子值。mysql select rand 0.5925 mysql select ra...

MySQL如何從表中取出隨機資料

原來都想用php的實現隨機,但取出多條好像要進行兩次以上查詢.最近我從mysql手冊中,找到了下面這個語句,可以完成任務 select from table name order by rand limit 5 rand在手冊裡是這麼說的 rand rand n 返回在範圍0到1.0內的隨機浮點值。...

MySQL實現表中取出隨機資料

一直以為mysql隨機查詢幾條資料,就用 select from table order by rand limit 5 就可以了。但是真正測試一下才發現這樣效率非常低。乙個15萬餘條的庫,查詢5條資料,居然要8秒以上 檢視官方手冊,也說rand 放在order by 子句中會被執行多次,自然效率及...