问题描述
嗨,汤姆,
我有两张表。一个是test,另一个是test1。每个表都有两列,record_id和c1,并且都是varchar2(10)。
测试内容如下
我想要下面这样的结果
这意味着如果test.c1 = test1.c1,则不显示。如果两者均为null,则不显示。仅显示test.c1 test1.c1如果一侧为null值,如何构造我的查询?
亲切的问候,
德里克
我有两张表。一个是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 11 2 2 3 2
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




