0

我正在尝试构建一个查询以获取表 1 中的所有行,然后检查表 2 中是否存在相应的行,如果存在,则提取一些数据,加入并插入表 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

谢谢!

4

2 回答 2

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)
于 2012-06-20T14:49:44.400 回答
0
insert into T3 (foo, bar)
select T1.foo, T2.bar
from T1, T2
where T1.mycolumn - T2.othercolumn > 0
于 2012-06-20T14:48:27.530 回答