INTERSECT
INTERSECT は、ユニオンクエリと呼ばれ、1つのクエリ結果と別のクリエ結果の同じ行のみの結果を返します。
ユニオンクエリには、UNION, EXCEPT 句もあります。
ちなみに、SQL Server には、INTERSECT ALL はありません。
INTERSECT の使い方
1つの目のクエリ結果と、次のクリエ結果を比較し、同じ行(レコード)のみを結果として返します。
以下に簡単な例を書きます。
tble1の結果からtbl2と同じ結果(行)があるもののみ結果を返しています。
declare @tbl1 table(a_cd char(9), b_kbn char(1), c_kbn int) insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000001','1',0) insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000010','1',1) insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000020','2',1) insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000030','3',1) declare @tbl2 table(a_cd char(9), b_kbn char(1), c_kbn int) insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000001','1',0) insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000010','1',1) insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000020','2',1) insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000030','3',2) select * from @tbl1 INTERSECT select * from @tbl2
left join 句を使用して同じこともできますが、INTERSECT 句を使った方がシンプルですね。
select t1.* from @tbl1 t1 left join @tbl2 t2 on t1.a_cd = t2.a_cd and t1.b_kbn = t2.b_kbn and t1.c_kbn = t2.c_kbn where t2.a_cd is not null
以上、INTERSECT の簡単な使用方法でした。