Oracle新手,键入以从两个集合中检索数据,比较和有条件地插入

时间:2012-06-20 14:43:12

标签: sql database oracle

我正在尝试构建一个查询来获取表1中的所有行,然后检查表2中是否存在相应的行,如果是,则拉一些数据,JOIN并插入表3.这将更有意义在伪代码中 - 所以这就是我正在尝试做的,在程序上,我只是不确定如何在PL / SQL中实现它。

For all rows in T1:
    For all rows in T2:
        if (T1.mycolumn - T2.othercolumn) > 0:
            INSERT INTO T3 (foo, bar) VALUES T1.foo, T2.bar

谢谢!

2 个答案:

答案 0 :(得分:2)

听起来你正在描述像

这样的东西
INSERT INTO t3( foo, bar )
  SELECT t1.foo,
         t2.bar
    FROM t1
         LEFT OUTER JOIN t2 ON (t1.mycolumn > t2.othercolumn)
但是,我不确定这实际上是你想要的。一些样本数据和预期输出会有所帮助。在您所描述的内容中,t1.foo值可能会多次插入t3,因为它们匹配t2中的许多不同行。通常情况下,t1t2会有一些常用的密钥,用于确定是否存在适当的t2行,而t1.mycolumn > t2.otherColumn条件是否恰好是另一个谓词

INSERT INTO t3( foo, bar )
  SELECT t1.foo,
         t2.bar
    FROM t1
         LEFT OUTER JOIN t2 ON (    t1.someKey = t2.someKey 
                                AND t1.mycolumn > t2.othercolumn)

答案 1 :(得分:0)

insert into T3 (foo, bar)
select T1.foo, T2.bar
from T1, T2
where T1.mycolumn - T2.othercolumn > 0