暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 我如何显示这样的结果集?

ASKTOM 2018-11-28
340

问题描述

嗨,汤姆,

我有两张表。一个是test,另一个是test1。每个表都有两列,record_id和c1,并且都是varchar2(10)。

测试内容如下

record_id  c1 
-----------------
1         null
2         3
3         +
4         null

record_id c1
------ ---------
1          2
2         null
3          +
4         null


我想要下面这样的结果

test.record_id  test.c1      test1.record_id test1.c1
------------------------------------------------------
1              null                       1         2
2              3                          2         null


这意味着如果test.c1 = test1.c1,则不显示。如果两者均为null,则不显示。仅显示test.c1 test1.c1如果一侧为null值,如何构造我的查询?

亲切的问候,

德里克




专家解答

联接,其中列在一个表中不为null,而在另一个表中为null,反之亦然:

create table t1 (
  id int,
  c1 varchar2(1)
);
create table t2 (
  id int,
  c1 varchar2(1)
);

insert into t1 values ( 1, null );
insert into t1 values ( 2, 3 );
insert into t1 values ( 3, '+' );
insert into t1 values ( 4, null );

insert into t2 values ( 1, 2 );
insert into t2 values ( 2, null );
insert into t2 values ( 3, '+' );
insert into t2 values ( 4, null );
commit;

select * from t1
join   t2
on     t1.id = t2.id
and    ( 
  ( t1.c1 is null and t2.c1 is not null) or 
  ( t1.c1 is not null and t2.c1 is null) 
);

ID   C1       ID   C1       
   1       1 2        
   2 3           2    

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论