例えば下記の図でcol2の値が1,2をもつレコードを抽出したいときの
SQLを教えてください。
col1, col2
-------------
CD100,1 ←これ
CD100,2 ←これ
CD102,1
CD103,2
CD104,3
CD105,1 ←これ
CD105,2 ←これ
↓
結果は以下になるようなSQLです。
col1, col2
-------------
CD100,1
CD100,2
CD105,1
CD105,2
create table test(
col1 varchar2(50),
col2 int
);
insert into test values('CD100',1);
insert into test values('CD100',2);
insert into test values('CD102',1);
insert into test values('CD103',2);
insert into test values('CD104',3);
insert into test values('CD105',1);
insert into test values('CD105',2);
col2 の型が int なのと col1 = 'CD102', col2 = 1 が想定している検索結果から外れていることを考慮すると、以下のような SQL になります。
select col1, col2 from test where col1 in ('CD100','CD105') and col2 in (1,2)
もし、CD102 が検索条件に入っていないのが質問を書いたときのミスだとしたら、こうなります。
select col1, col2 from test where col2 in (1,2)
「select T1.col1 from (select col1 from test where col2 = 1) T1,(select col1 from test where col2 = 2) T2 where T1.col1 = T2.col1」で、col1は抽出できますね。SQLでcol2が1,2の2レコードを取る必要は無いと思います。
URLを貼り忘れました。すみません。
2014/04/25 10:51:11http://www.shift-the-oracle.com/sql/select.html
ああ、col2は数字型でしたね。
2014/04/25 11:21:58select col1, col2 from test where col2 in (1,2)
が正解です。
大変失礼しました。