中国最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2

sql教程

SQL 教程

SQL 高级教程

SQL 函数

  • SQL 主机
  • SQL 总结
  • 实例/测验

    拓展阅读

    SQL RAND() 函数

    阅读 (2515)

    SQL RAND 函数

    SQL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数:

        SQL>  SELECT RAND( ), RAND( ), RAND( );
        +------------------+-----------------+------------------+
        | RAND( )          | RAND( )         | RAND( )          |
        +------------------+-----------------+------------------+
        | 0.45464584925645 | 0.1824410643265 | 0.54826780459682 |
        +------------------+-----------------+------------------+
        1 row in set (0.00 sec)

    当以某个整数值作为参数来调用的时候,RAND() 会将该值作为随机数发生器的种子。对于每一个给定的种子,RAND() 函数都会产生一列可以复现的数字:

        SQL>  SELECT RAND(1), RAND( ), RAND( );
        +------------------+------------------+------------------+
        | RAND(1 )         | RAND( )          | RAND( )          |
        +------------------+------------------+------------------+
        | 0.18109050223705 | 0.75023211143001 | 0.20788908117254 |
        +------------------+------------------+------------------+
        1 row in set (0.00 sec)

    你可以使用 ORDER BY RAND() 来对一组记录进行随机化排列,如下所示:

        SQL> SELECT * FROM employee_tbl;
        +------+------+------------+--------------------+
        | id   | name | work_date  | daily_typing_pages |
        +------+------+------------+--------------------+
        |    1 | John | 2007-01-24 |                250 |
        |    2 | Ram  | 2007-05-27 |                220 |
        |    3 | Jack | 2007-05-06 |                170 |
        |    3 | Jack | 2007-04-06 |                100 |
        |    4 | Jill | 2007-04-06 |                220 |
        |    5 | Zara | 2007-06-06 |                300 |
        |    5 | Zara | 2007-02-06 |                350 |
        +------+------+------------+--------------------+
        7 rows in set (0.00 sec)

    现在,试试下面的命令:

        SQL> SELECT * FROM employee_tbl ORDER BY RAND();
        +------+------+------------+--------------------+
        | id   | name | work_date  | daily_typing_pages |
        +------+------+------------+--------------------+
        |    5 | Zara | 2007-06-06 |                300 |
        |    3 | Jack | 2007-04-06 |                100 |
        |    3 | Jack | 2007-05-06 |                170 |
        |    2 | Ram  | 2007-05-27 |                220 |
        |    4 | Jill | 2007-04-06 |                220 |
        |    5 | Zara | 2007-02-06 |                350 |
        |    1 | John | 2007-01-24 |                250 |
        +------+------+------------+--------------------+
        7 rows in set (0.01 sec)
    
        SQL> SELECT * FROM employee_tbl ORDER BY RAND();
        +------+------+------------+--------------------+
        | id   | name | work_date  | daily_typing_pages |
        +------+------+------------+--------------------+
        |    5 | Zara | 2007-02-06 |                350 |
        |    2 | Ram  | 2007-05-27 |                220 |
        |    3 | Jack | 2007-04-06 |                100 |
        |    1 | John | 2007-01-24 |                250 |
        |    4 | Jill | 2007-04-06 |                220 |
        |    3 | Jack | 2007-05-06 |                170 |
        |    5 | Zara | 2007-06-06 |                300 |
        +------+------+------------+--------------------+
        7 rows in set (0.00 sec)
    关闭
    程序员人生