主要是利用row_number() over()函式以及dbms_random.value產生的隨機數大小排序進行,再對固定的排序序號進行統一取值,
select id,
empno ,
row_number() over(partition by empno order by dbms_random.value) as row_num
from emp t;
score
empno
row_num
493652
21092
1492765
21092
2430016
21097
144490
21097
222688
22527
14498
22527
282139
225273
如果要隨機獲取每乙個員工其中的一次score,則可以將上面的的結果作為子查詢,在row_num=1,就可以獲取隨機記錄了
select score, empno
from (select score,
empno,
row_number() over(partition by staffid order by dbms_random.value) as row_num
from emp) t
where t.row_num = 1;
score
empno
row_num
3652
21092
130016
21097
180329
22527
19219
22566
12956
23112
14052
23119
1766
23164
1 這樣,每次查詢的結果都是隨機的了,有可能相同,有可能不同。
如果不用分組,那就更簡單了。
select * from (select * from emp order by dbms_random.value) where rownum < 10
隨機獲取
9個記錄。
SQL分組獲取隨機記錄
分類專欄 sql 主要是利用row number over 函式以及dbms random.value產生的隨機數大小排序進行,再對固定的排序序號進行統一取值,select id,empno row number over partition by empno order by dbms rando...
SQL 分組後獲取時間為最新的記錄
1.建立一張test表,表結構如下 create table test id int 11 not null name varchar 255 not null type varchar 255 not null create time timestamp primary key id 2.插入幾條...
Oracle獲取隨機記錄
最近在做乙個小的考試系統,需要用到隨機抽取題目,於是就從網上搜到如下方法 1.dbms random包 select from select from tablename order by dbms random.value where rownum n 注 dbms random包需要手工安裝,位...