鍍金池/ 教程/ 數(shù)據(jù)庫/ SQL RAND 函數(shù)
SQL AND 和 OR 連接運(yùn)算符
SQL 刪除數(shù)據(jù)庫
SQL 使用序列
SQL CONCAT 函數(shù)
SQL 使用視圖
SQL SELECT 語句
SQL 別名
SQL MAX 函數(shù)
SQL 創(chuàng)建表
SQL NULL 值
SQL 數(shù)據(jù)類型
SQL RAND 函數(shù)
SQL 臨時(shí)表
SQL INSERT 語句
SQL ALTER TABLE 命令
SQL 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
SQL SUM 函數(shù)
SQL 子查詢
SQL UPDATE 語句
SQL 表達(dá)式
SQL 操作符
SQL ORDER BY 子句
SQL WHERE 子句
SQL 對結(jié)果進(jìn)行排序
SQL 注入
SQL AVG 函數(shù)
SQL 選擇數(shù)據(jù)庫,USE 語句
SQL 克隆數(shù)據(jù)表
SQL COUNT 函數(shù)
SQL 語法
SQL DELETE 語句
SQL 約束
SQL 刪除表
SQL TOP、LIMIT 和 ROWNUM 子句
SQL 日期函數(shù)
SQL TRUNCATE TABLE 命令
SQL DISTINCT 關(guān)鍵字
SQL 處理重復(fù)數(shù)據(jù)
SQL 使用連接
SQL 索引
SQL 事務(wù)
SQL GROUP BY 子句
SQL HAVING 子句
SQL MIN 函數(shù)
SQL 概覽
SQL SQRT 函數(shù)
SQL LIKE 子句
SQL 通配符
SQL UNION 子句
SQL 數(shù)據(jù)庫
SQL 創(chuàng)建數(shù)據(jù)庫

SQL RAND 函數(shù)

SQL 有一個(gè) RAND 函數(shù),用于產(chǎn)生 0 至 1 之間的隨機(jī)數(shù):

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

當(dāng)以某個(gè)整數(shù)值作為參數(shù)來調(diào)用的時(shí)候,RAND() 會將該值作為隨機(jī)數(shù)發(fā)生器的種子。對于每一個(gè)給定的種子,RAND() 函數(shù)都會產(chǎn)生一列可以復(fù)現(xiàn)的數(shù)字:

    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() 來對一組記錄進(jìn)行隨機(jī)化排列,如下所示:

    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)

現(xiàn)在,試試下面的命令:

    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)