ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

SQL ServerのMinus、Except

OracleのMINUS演算子SQL Serverには存在しない、代わりにEXCEPTを使って似た様な処理が可能だ。

EXCEPT:左のクエリにあって右のクエリにない個別の値を返す。
結果はMINUSと同じになる。(違うケースあり)

insert into TBL1 values ('1');
insert into TBL1 values ('2');
insert into TBL1 values ('3');
insert into TBL2 values ('1');
insert into TBL2 values ('3');

select * from TBL1
EXCEPT
select * from TBL2

>結果
2

複数の場合は一致するすべての値を除外する。

MINUSとは違う部分で有るだけ排除ではなく、一致するものはすべて排除した結果を返す。

insert into TBL1 values ('1');
insert into TBL1 values ('1');
insert into TBL1 values ('2');
insert into TBL2 values ('1');
insert into TBL2 values ('3');

select * from TBL1
EXCEPT
select * from TBL2

>結果
2
  1. TBL1に複数ぞんざいする"1"の値がすべて排除される。