oracleでselectしたときに

例えば下記の図で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);

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/02 10:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:sasada No.1

回答回数1482ベストアンサー獲得回数133

ポイント34pt

select col1, col2 from test where col2 in ('1','2')
くらいですかね。

id:sasada

URLを貼り忘れました。すみません。
http://www.shift-the-oracle.com/sql/select.html

2014/04/25 10:51:11
id:sasada

ああ、col2は数字型でしたね。
select col1, col2 from test where col2 in (1,2)
が正解です。
大変失礼しました。

2014/04/25 11:21:58
id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141

ポイント33pt

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)
id:pogpi No.3

回答回数428ベストアンサー獲得回数59

ポイント33pt

「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レコードを取る必要は無いと思います。

  • id:Sampo
    CD106,1
    CD106,2
    CD106,3

    というレコードがあったときにはどういう結果が出ることを期待していますか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません