Sql 将所有值与随机值一起插入
我有三张桌子:T1、T2和T3 我试图将数据插入T1,如下所示:Sql 将所有值与随机值一起插入,sql,random,plsql,Sql,Random,Plsql,我有三张桌子:T1、T2和T3 我试图将数据插入T1,如下所示: T1.DATA1 = random values from T3.DATA1 T1.DATA2 = T2.DATA2 T1.DATA3 = T2.DATA3 我已尝试此查询:我已尝试此查询: INSERT INTO T1 (DATA1, DATA2, DATA3) SELECT (SELECT DATA1 FROM (SELECT DATA1 FROM T3 ORDER BY dbms_random.value) WHERE r
T1.DATA1 = random values from T3.DATA1
T1.DATA2 = T2.DATA2
T1.DATA3 = T2.DATA3
我已尝试此查询:我已尝试此查询:
INSERT INTO T1 (DATA1, DATA2, DATA3)
SELECT (SELECT DATA1 FROM
(SELECT DATA1 FROM T3
ORDER BY dbms_random.value)
WHERE rownum = 1), DATA2, DATA3
FROM T2;
它将正确的值返回到DATA2
和DATA3
,但在DATA1
中,我在所有行中都生成了一个随机值。如何修改此查询以使每行中都有随机值T2
包含大约3000行。此子查询
SELECT DATA1
FROM (SELECT DATA1
FROM T2
ORDER BY dbms_random.value)
WHERE rownum = 1
只返回一行,然后在表T2
包含行时重复该行。这就是我们的查询不起作用的原因。要以随机顺序插入值(如果我理解您的需要):
用于将行相乘。如果
t3
表包含15行,则子查询相乘的联接结果将产生3000行,其中来自t3
的每一行将重复200次。要乘以另一个值,将其放入查询中,而不是200
“T2中的数据以随机顺序”是否足够随机?或者您还需要其他内容吗?您想从DATA1
列中洗牌数据吗?谢谢@Dmitry,我完全忘了我有第三个表,我需要从中获得这些随机值。我编辑了我的帖子,请你也编辑一下你的答案好吗?我正在看你的帖子,试图找出如何实现它。这个查询只返回T3中的行数。我的T1是空的,T2有3000行,T3有15行。这个查询只返回15行,其中包含来自T3的随机值和来自T2的随机值。@mauekunak,您以前没有提到过这一点。那么,需要如何处理T2
和T3
的值呢?重复T3
值200次(产生3000行)或切割T2
?T3井有主键。我认为行数不必相同,只要将T3.DATA1中的任意随机值放入T1.DATA1即可。如果我们需要重复3000行,那么是的,这就是我想要的need@mauekunak再次更新
INSERT INTO T1 (DATA1, DATA2, DATA3)
select tt.data1, t.data2, t.data3
from (select t2.data2, t2.data3, rownum rn
from t2) t,
(select data1, row_number() over (order by dbms_random.value) rn
from t3,
(select rownum from dual connect by level <= 200) m) tt
where t.rn = tt.rn
select rownum from dual connect by level <= 200