zoukankan      html  css  js  c++  java
  • MySQL中的RAND()函数使用详解(order by rand() 随机查询取前几条记录)

    MySQL RAND()函数调用可以在0和1之间产生一个随机数:

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

    当调用一个整数参数时,RAND()使用该随机数发生器种子值。每次在给定值种子生成,RAND()会产生一个可重复的一系列数字:

    mysql> 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(),随机组行或值如下:

    要了解ORDER BY RAND()函数, 假设EMPLOYEE_TBL的表有以下记录:

    mysql> 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)

    现在使用以下目录:

    mysql> 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)
     
    mysql> 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)

    order by rand() 随机查询取前几条记录

  • 相关阅读:
    tailf、tail -f、tail -F三者区别(转)
    Jackson是线程安全的吗
    SecureCRT同时向多个终端发送命令
    SecureCRT设置和Xshell一样的快速命令集(使用快捷键输入命令和密码)
    SecureCRT配色方案
    Java中判断字符串是否为数字的方法
    MySQL错误:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL easonjim
    SecureCRT导出服务器列表或配置文件
    java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.<init>()
    Badge
  • 原文地址:https://www.cnblogs.com/fps2tao/p/9041204.html
Copyright © 2011-2022 走看看