私はテーブルを持っています:
create table a (page int, pro int)
go
insert into a select 1, 2
insert into a select 4, 2
insert into a select 5, 2
insert into a select 9, 2
insert into a select 1, 3
insert into a select 2, 3
insert into a select 3, 3
insert into a select 4, 3
insert into a select 9, 3
insert into a select 1, 4
insert into a select 9, 4
insert into a select 12, 4
insert into a select 1, 5
insert into a select 9, 5
insert into a select 12, 5
insert into a select 13, 5
insert into a select 14, 5
insert into a select 15, 5
go
(ここに、このテーブルのSQLfiddleと、私が書き始めたクエリがあります)
すべての行のページの共通値
このテーブルから各列「プロ」の共通列「ページ」を抽出しようとしています。ここに私たちが期待するものがあります:
1 9
私は使用しようとしました:
SELECT DISTINCT a.page FROM a WHERE a.page IN ( SELECT b.page FROM a as b WHERE b.pro <> a.pro )
しかし、このクエリは、必要ではない共通の値を少なくとも1 つ持つすべての「ページ」を返します。下記参照 :
1 4 9 12
反対のクエリは、常にではなく、少なくとも 1 つは異なる値です。
1 つ以上の「プロ」にリンクされているが、それらすべてに共通ではない「ページ」を抽出しようとしています (前のクエリとは正反対です)。
これが私たちが期待するものです:
2
3
4
5
12
13
14
15
これらの 2 つのクエリの解決策を見つけることができません :'( 誰か助けてくれませんか?
よろしくお願いします
編集: SQLfiddle の URL