Oracle随机抽取数据

本文介绍了Oracle数据库中两种随机抽取数据的方法。第一种是使用SAMPLE关键字,通过block(50)或(50)来抽取数据块或行的一定比例。第二种方法利用DBMS_RANDOM.VALUE结合ROWNUM或row_number()来获取不重复的随机记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.SAMPLE  

如果表T1有数据块B1,B2

  B1有记录R1,R2,R3,R4,R5

  B2有记录R6,R7,R8,R9,R10

  如果使用如下SQL选择50%的数据

  select * from t1 sample block(50)

  则返回的结果可能是数据块B1的记录

  R1,R2,R3,R4,R5

  也可能是数据块B2的记录

  R6,R7,R8,R9,R10

  也可能不返回记录集

  如果使用如下SQL选择50%的数据

  select * from t1 sample (50)

  则返回的结果可能是

  R2,R3,R5,R8,R9

  也可能是如下的样子

  R1,R3,R4,R8

2.DBMS_RANDOM.VALUE抽取不重复的记录

方法1:

SELECT * FROM(

   SELECT * FROM t where site=1 and status is null ORDER BY dbms_random.value) 

 WHERE ROWNUM=1

方法2:

select *. from (

   select t.*, row_number() over(order by dbms_random.value) rn

   from t where site=2 and status is null) t

 where t.rn = 1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值