对 order by random() 的理解

简介:

开始

order by random() ,相当于不是根据某个字段来排序,而是乱序。这个方法可以帮助制造混乱分布的测试数据。

复制代码
postgres=# \d employee
          Table "public.employee"
 Column |         Type          | Modifiers 
--------+-----------------------+-----------
 id     | integer               | 
 name   | character varying(20) | 
 deptno | integer               | 
 age    | integer               | 
Indexes:
    "idx_id_dept" btree (id, deptno)

postgres=# select name, age from employee order by name limit 5;
 name  | age 
-------+-----
 gao   |  30
 jian  |  35
 nam04 |  25
 nam05 |  40
 nam06 |  32
(5 rows)

postgres=# select name, age from employee order by age limit 5;
 name  | age 
-------+-----
 nam10 |  25
 nam16 |  25
 nam04 |  25
 nam28 |  25
 nam22 |  25
(5 rows)

postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam560 |  40
 nam758 |  40
 nam635 |  40
 nam307 |  25
 nam708 |  30
(5 rows)

postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam490 |  25
 nam444 |  32
 nam943 |  25
 nam143 |  35
 nam690 |  32
(5 rows)

postgres=# select name, age from employee order by 0.1 limit 5;
ERROR:  non-integer constant in ORDER BY
LINE 1: select name, age from employee order by 0.1 limit 5;
                                                ^
postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam214 |  25
 nam474 |  32
 nam175 |  25
 nam22  |  25
 nam210 |  32
(5 rows)

postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam390 |  30
 nam626 |  35
 nam342 |  30
 nam620 |  35
 nam674 |  35
(5 rows)

postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam242 |  35
 nam847 |  30
 nam509 |  35
 nam945 |  32
 nam721 |  25
(5 rows)

postgres=# select name, age from employee order by random() limit 5;
  name  | age 
--------+-----
 nam165 |  32
 nam956 |  40
 nam446 |  35
 nam65  |  40
 nam291 |  30
(5 rows)

postgres=# 
复制代码








目录
相关文章
|
1月前
|
SQL 关系型数据库 数据处理
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
16 0
|
2月前
random.choice(seq)
random.choice(seq)
15 1
|
3月前
|
SQL 搜索推荐 关系型数据库
order by rand() 实现随机获取消息
order by rand() 实现随机获取消息
|
9月前
rank()、dense-rank()、row-number()的区别
rank()、dense-rank()、row-number()的区别
61 0
|
SQL 分布式计算 Spark
SPARK Expand问题的解决(由count distinct、group sets、cube、rollup引起的)
SPARK Expand问题的解决(由count distinct、group sets、cube、rollup引起的)
559 0
SPARK Expand问题的解决(由count distinct、group sets、cube、rollup引起的)
LeetCode 304. Range Sum Query 2D - Immutable
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。
76 0
LeetCode 304. Range Sum Query 2D - Immutable
|
索引
LeetCode 303. Range Sum Query - Immutable
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
65 0
LeetCode 303. Range Sum Query - Immutable
LeetCode 307. Range Sum Query - Mutable
update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。
75 0
LeetCode 307. Range Sum Query - Mutable
|
关系型数据库 MySQL
MySQL - 排序函数 Rank() Over()、Dense_rank() Over()、Row_number() Over()
MySQL - 排序函数 Rank() Over()、Dense_rank() Over()、Row_number() Over()
276 0
MySQL - 排序函数 Rank() Over()、Dense_rank() Over()、Row_number() Over()