将两个oracle sql结果合并到单个数据集中

时间:2015-03-11 19:10:33

标签: sql oracle oracle11g

我有两个选择,我想以这样的方式组合它们,只返回一个在两个选择中都匹配了键列的行(第一个选择中的一行和第二个选择中的一个行)。 Oracle 10g中是否有任何内置方法可以实现此目的?

我有两个sql如下

查询1:

从表t1中选择c11,c12 其中c11 = 1000

查询2: 选择c21,c22 从t2开始 其中c21 = 1000

我想在关键列(OPTYREVN_OPTY_XI,OPTYREVN_SEGMENT_XI和OPTYREVN_OPTYREVNCRM_ID)上组合查询1和查询2。我的输出应该只包含在查询1和查询2的结果中找到的唯一一行。

我不确定使用UNION或Intersect还是左外连接。 请建议我一些在这种情况下有用的解决方案。感谢。

2 个答案:

答案 0 :(得分:0)

所以,如果我说得对,你想在一行上有c1,c2,c33,c21,c22和c23,如果两个查询只返回一行并且没有信息可以链接它们,这应该有效..

SELECT a.* , b.* 
FROM (select c1, c2, c33
   from t1, t3
   where c1= 1000 and c33 is null) a ,  
   (select c21, c22, c23
   from t2
   where c21= 1000) b
/*WHERE...*/  --you could always use some condition linking a and b

答案 1 :(得分:0)

我认为您会想要使用联接:

SELECT c1, c2, c33, c21, c22, c23
  FROM t1 INNER JOIN t3 ON <key columns>
 INNER JOIN t2
    ON t1.c1 = t2.c21
 WHERE t1.c1 = 1000
   AND t3.c33 IS NULL;