在Oracle中获取随机列值

时间:2015-05-21 03:00:08

标签: sql oracle oracle-sqldeveloper

假设我有一个table_details表,其中有10个不同的产品.1st列是product_ID,它是主键。

现在我想在order_details中插入90个随机条目,其中包含一个引用product_details.product_ID的列product_ID

如何从oracle中其他表中的给定10个条目中生成100个随机条目。

Pl告诉我这个问题的SQL查询(不是程序)。

1 个答案:

答案 0 :(得分:1)

如果您只有10行,那么只需执行cross join,按dbms_random.value排序并过滤到前90行(作为插入的一部分)就不会出现任何性能问题语句):

insert into order_details
select *
from(
select p1.*
from product_details p1
cross join product_details p2
order by dbms_random.value
) where rownum <= 90;

小提琴演示: http://sqlfiddle.com/#!4/d390c/1/0

我假设您有其他列,而不仅仅是product_id,因此请相应修改。

如果表格大于10行,并且您仍然只想随意使用90行,则可以使用sample()将其缩小到90行以上的目标,然后按{{1}排序之后,其中rownum&lt; = 90.数据集越大,这样做会有更大的性能提升。有10行可以忽略不计。完整的交叉产品只有100行。