我有两个选择,我想以这样的方式组合它们,只返回一个在两个选择中都匹配了键列的行(第一个选择中的一行和第二个选择中的一个行)。 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还是左外连接。 请建议我一些在这种情况下有用的解决方案。感谢。
答案 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;