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

テーブルの項目Aが同一のレコードが2件でかつ、その同一のレコードの項目Bの内いずれか一方が’2’であるレコードを抽出するにはどの様なSQL(ORACLE)を作成すればいいでしょうか。教えてください。


項目A 項目B
3 2
3 2
4 2
5 3
5 4
6 2 ← 抽出対象
6 3 ← 抽出対象
7 1
7 1
7 2
8 1 ← 抽出対象
8 2 ← 抽出対象
9 1
10 2
10 2

●質問者: yas0527yas0527
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Oracle SQL レコード 作成 抽出
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● fumikef
●35ポイント

すぐ思いつくのは、こんな感じ。

もっと効率のいい方法があるかな・・・


select 項目A, 項目B

from テーブル

where 項目A in

( select 項目A from テーブル group by 項目A having count(項目B) = 2 )

and 項目A in

( select 項目A from テーブル where 項目B = '2')

◎質問者からの返答

回答ありがとうございます。当SQLですと項目A=’3’のレコードも抽出対象になってしまいます。(質問の記述に不備(いずれか一方)がありましたことお詫びします。)


2 ● fumikef
●35ポイント

失礼しました1つ条件の見落としがありました。

「項目Bの内いずれか一方が’2’」というのは

「項目Bの内いずれか一方だけが’2’」なんですね。

つまり両方とも’2’のものは除くということで・・・

コメント欄が開放されてないので、再度回答させてもらいました。


select 項目A, 項目B

from テーブル

where 項目A in ( select 項目A from テーブル group by 項目A having count(項目B) = 2 )

and 項目A in ( select 項目A from テーブル where 項目B = '2')

group by 項目A, 項目B

having count(*) = 1


最初の回答に、group by と having を追加しただけですけど。

◎質問者からの返答

ご回答ありがとうございました。助かりました。

関連質問


●質問をもっと探す●



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