從mysql資料表中隨機取出一條記錄

2022-03-25 00:57:49 字數 721 閱讀 5463

核心查詢資料表**:

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內的隨機浮點值。...