核心查詢資料表**:
select*from 表名 order
byrand( ) limit 1; //此處的1就是取出資料的條數
但這樣取資料網上有人說效率非常差的,那麼要如何改進呢
搜尋google,網上基本上都是查詢max(id) * rand()來隨機獲取資料。
select*from `table` as t1 join (select
round(rand() * (select
max(id) from `table`)) as id) as
t2where t1.id >=
t2.id
order
by t1.id asc limit 5;
但是這樣獲得的是5條連續的記錄。解決辦法只能是每次查詢一條,查詢5次,但這個又不能滿足我的要求了,我要一次找幾條
高效寫法
select*from
user
where userid >= ((select
max(userid) from
user )-(select
min(userid) from
user )) *
rand() + (select
min(userid) from
user ) limit 5
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 如何從表中取出隨機資料
以前在群裡討論過這個問題,比較的有意思.mysql的語法真好玩.他們原來都想用php的實現隨機,但取出多條好像要進行兩次以上查詢.翻了手冊,找到了下面這個語句,可以完成任務了 select from table name order by rand limit 5 rand在手冊裡是這麼說的 ran...
MySQL如何從表中取出隨機資料
原來都想用php的實現隨機,但取出多條好像要進行兩次以上查詢.最近我從mysql手冊中,找到了下面這個語句,可以完成任務 select from table name order by rand limit 5 rand在手冊裡是這麼說的 rand rand n 返回在範圍0到1.0內的隨機浮點值。...