TableA TableB PKey Col1 PKey Col1 ---- ---- ---- ---- 1 aaaa 1 bbbb 2 cccc 2 dddd 3 eeee 4 ffff 5 gggg TableAにあるがTableBにない、PKeyの数と TableBにあるがTableAにない、PKeyの数 を出力する。 出力結果 TableAOnly TablebOnly ---------- ---------- 1 2
create table TableA( PKey number(3) primary key, Col1 varchar2(4)); create table TableB( PKey number(3) primary key, Col1 varchar2(4)); insert all into TableA(PKey,Col1) values(1,'aaaa') into TableB(PKey,Col1) values(1,'bbbb') into TableA(PKey,Col1) values(2,'cccc') into TableB(PKey,Col1) values(2,'dddd') into TableA(PKey,Col1) values(3,'eeee') into TableB(PKey,Col1) values(4,'ffff') into TableB(PKey,Col1) values(5,'gggg') select 1 from dual; commit;
select count(a.PKey) as TableAOnly, count(b.PKey) as TablebOnly from TableA A full join TableB b on (a.PKey = b.PKey) where a.PKey is null or b.PKey is null;
TableAとTableBの和集合と、 TableAとTableBの共通集合との 差集合のそれぞれの要素数を求めてます。 脳内でベン図を書いて (A∪B)-(A∩B) をイメージすると、分かりやすいでしょう。