【发布时间】:2015-12-01 14:45:48
【问题描述】:
我有两张桌子
create table table1 (tb1 number);
insert into table1 values (13);
insert into table1 values (14);
insert into table1 values (15);
insert into table1 values (16);
create table table2(tb2 number);
insert into table2 values (13);
insert into table2 values (14);
insert into table2 values (25);
insert into table2 values (26);
我想在左列中输出内部连接值,在右列中输出表 2 中的不同右值。所以应该是
13 25
14 26
我尝试使用减号
select table1.tb1, table2.tb2 from table1 right join table2 on table1.tb1= table2.tb2
minus
select null, table2.tb2 from table1 inner join table2 on table1.tb1=table2.tb2
;
但是我得到了
13 13
14 14
25
26
我能做什么?单独两个选择工作正常,我只想做第一个选择结果减去第二个选择结果。
【问题讨论】:
-
你不能用
minus做你想做的事。你正在尝试做(A-B) union (B-A)。 -
对不起,不明白但会尝试
-
@vkp 实际上它更加复杂,因为 OP 想要并列两个结果集。
-
@ifooi:使用
minus,您正在从结果集中消除整个记录。相反,您希望对来自不同结果集中的列进行配对。但是,您不会在第一个查询生成的基本结果集中将它们配对,minus运算符也不会执行这样的操作。顺便说一句,通常列并置没有多大意义,因为包装到单个记录中的信息在语义上不相关。