いくつかのカラムで2つのテーブルの間にFULL OUTER JOIN
を使用したいが、両方のカラムがnullの場合、ジョインの間に等しいと見なされないため、2つの異なるローが得られる。どうすればNULL列が等しいと見なされるので、結合を書くことができますか?nullカラムのSQL:FULL OUTER JOIN
私は簡単な例を設定している:
create table t1 (
id number(10) NOT NULL,
field1 varchar2(50),
field2 varchar2(50),
CONSTRAINT t1_pk PRIMARY KEY (id)
);
create table t2 (
id number(10) NOT NULL,
field1 varchar2(50),
field2 varchar2(50),
extra_field number(1),
CONSTRAINT t2_pk PRIMARY KEY (id)
);
insert into t1 values(1, 'test', 'test2');
insert into t2 values(1, 'test', 'test2', null);
insert into t1 values(2, 'test1', 'test1');
insert into t2 values(2, 'test1', 'test1', null);
insert into t1 values(3, 'test0', null);
insert into t2 values(3, 'test0', null, 1);
insert into t2 values(4, 'test4', 'test0', 1);
select *
from t1
full outer join t2 using (id, field1, field2);
なぜなら、それぞれのテーブルの主キーなので、ID列を結合しないのはなぜですか? – Sentinel