zoukankan      html  css  js  c++  java
  • SQL分组获取随机记录

    SQL分组获取随机记录

    2017-12-30 08:59:32 一木剑 阅读数 1038更多

    分类专栏: SQL

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本文链接:https://blog.csdn.net/qq_34226365/article/details/78936006

    主要是利用row_number() over()函数以及DBMS_RANDOM.value产生的随机数大小排序进行,再对固定的排序序号进行统一取值,

    
     
    1. select id,

    2. empno ,

    3. row_number() over(partition by empno order by DBMS_RANDOM.value) as row_num

    4. from emp t;

    SCORE EMPNO ROW_NUM
    493652 21092 1
    492765 21092 2
    430016 21097 1
    44490 21097 2
    22688 22527 1
    4498 22527 2
    82139 22527 3

    如果要随机获取每一个员工其中的一次score,则可以将上面的的结果作为子查询,在ROW_NUM=1,就可以获取随机记录了

    
     
    1. select score, empno

    2. from (select score,

    3. empno,

    4. row_number() over(partition by staffid order by DBMS_RANDOM.value) as row_num

    5. from emp) t

    6. where t.row_num = 1;

    SCORE EMPNO ROW_NUM
    3652 21092 1
    30016 21097 1
    80329 22527 1
    9219 22566 1
    2956 23112 1
    4052 23119 1
    766 23164 1

    这样,每次查询的结果都是随机的了,有可能相同,有可能不同。

    如果不用分组,那就更简单了。

    select * from (select * from emp order by dbms_random.value)      where rownum < 10

    随机获取9个记录。

  • 相关阅读:
    POJ-1182 食物链
    hdu 1879 继续畅通工程
    HDU 2604 Queuing
    hdu 1232 畅通工程
    POJ-1611 The Suspects
    Free DIY Tour
    Tr A
    不容易系列之(3)―― LELE的RPG难题
    W3C标准冒泡、捕获机制
    JavaScript 浏览器事件解读
  • 原文地址:https://www.cnblogs.com/grj001/p/12223886.html
Copyright © 2011-2022 走看看