mysql取64 位隨機數 MySQL取出隨機資料

2021-10-17 11:33:23 字數 1347 閱讀 8393

他們原來都想用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

但我試了一下,8千條記錄的表,執行一次需要0.08 sec,.慢了些

後來請教了google,得到如下**

select *

from table_name as r1 join

(select round(rand() *

(select max(id)

from table_name)) as id)

as r2

where r1.id >= r2.id

order by r1.id asc

limit 5;

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

下面是其它網友的補充:

select id from  zhyx_items   order by rand()  這樣效率太低了

優化sql語句之後:

select t1.id

from zhyx_items as t1 join

(select round(rand() *

((select max(id) from zhyx_items)-(select min(id) from zhyx_items))+

(select min(id) from zhyx_items)) as id) as t2

where t1.id >= t2.id

order by t1.id limit 0,5;

MySQL中如何取隨機數

現在,假設需要產生234到5678之間的隨機整數,mysql下怎麼實現。我們無法改mysql下rand的產生值,但我們可以改變我們的需求,1 我們需要最小是234,最大是5678,rand產生的最小是0,最大是1,我們需求的數減去234看看?最小數234 234 0,最大數5678 234 5444...

ojbc 取隨機數

隨機數的使用 1 arc4random 比較精確不需要生成隨機種子 使用方法 通過arc4random 獲取0到x 1之間的整數的 如下 int value arc4random x 獲取1到x之間的整數的 如下 int value arc4random x 1 2 ccrandom 0 1 coc...

PHP 取隨機數

假設 有四個選項 a 佔 10 b佔20 c佔30 d 佔 40 原理就是現獲取隨機數,然後找區間。當然了,選項的數量可以任意。目前預設是 總和是 100 如果需要別的數,修改 隨機數的範圍即可。這個演算法,比較簡單,效率也還算高。當然因為是 rand 所以產生的是偽隨機數,不是真正意義上的隨機,能...