人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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);

●質問者: FujiiRock
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sasada
●34ポイント

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


sasadaさんのコメント
URLを貼り忘れました。すみません。 http://www.shift-the-oracle.com/sql/select.html

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

2 ● gizmo5
●33ポイント

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)

3 ● POGPI
●33ポイント

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ