国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql獲取隨機數據的方法

2024-07-24 12:47:52
字體:
來源:轉載
供稿:網友

1.order by rand()
數據多了極慢,隨機性非常好,適合非常小數據量的情況。

復制代碼 代碼如下:

SELECT * FROM table_name AS r1 JOIN (SELECT (ROUND(RAND() * (SELECT ABS(MAX(id)-MIN(id)-$limit) FROM table_name))+(SELECT MIN(id) from table_name)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT $limit;

速度非常快,但是得到的數據是id連續的,沒辦法解決。
子查詢產生一個隨機數。
rand()是0到1的隨機數,可以等于0到1。
MAX(id)-MIN(id)還要要減去$limit以免結果數量不夠$limit條
因為主表id可能不連續,所以r1.id要>=r2.id
還要注意的是有時候最小id不是從1開始的,可能從一個很大的數開始,所以必須加上M(id)的值
手冊相關內容:若要在i ≤ R ≤ j 這個范圍得到一個隨機整數R ,需要用到表達式 FLOOR(i + RAND() * (j – i + 1))。
例如, 若要在7 到 12 的范圍(包括7和12)內得到一個隨機整數, 可使用以下語句:
復制代碼 代碼如下:

SELECT FLOOR(7 + (RAND() * 6));
select * from test where rand()>0.0005 limit 10;
 

0.0005是一個計算出的比例直接關系到隨機的質量,比如數據表10000條數據,需要隨機取300條,那么0.0005就需要改成(300/10000=0.03)。
這種方法不能保證每次能取到多少,需要取多次。
2和3速度一樣的快,主要區別是2總能返回limit條數據,3就沒準了(符合正太分布)。2是連續數據,3是隨機行。

您可能感興趣的文章:

MySQL查詢隨機數據的4種方法和性能對比MySQL的指定范圍隨機數函數rand()的使用技巧從MySQL數據庫表中取出隨機數據的代碼mysql優化取隨機數據慢的方法mysql 某字段插入隨機數(插入隨機數到MySQL數據庫)詳解MySQL中concat函數的用法(連接字符串)Python連接MySQL并使用fetchall()方法過濾特殊字符sqlserver、mysql獲取連接字符串步驟PHP 設置MySQL連接字符集的方法MySQL產生隨機數并連接字符串的方法示例
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乌珠穆沁旗| 天柱县| 且末县| 阿拉善左旗| 泸定县| 浏阳市| 北川| 东乌珠穆沁旗| 大安市| 朝阳市| 射洪县| 原阳县| 佛坪县| 青浦区| 昌邑市| 阳新县| 商水县| 闽清县| 通河县| 大港区| 沙湾县| 玛纳斯县| 克东县| 德江县| 驻马店市| 潞西市| 罗城| 西丰县| 东辽县| 聊城市| 灵山县| 泾源县| 新平| 台南县| 铜鼓县| 马鞍山市| 连云港市| 文水县| 阳春市| 贵阳市| 林口县|