假设我有一个table_details表,其中有10个不同的产品.1st列是product_ID,它是主键。
现在我想在order_details中插入90个随机条目,其中包含一个引用product_details.product_ID的列product_ID
如何从oracle中其他表中的给定10个条目中生成100个随机条目。
Pl告诉我这个问题的SQL查询(不是程序)。
答案 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行。