複数キーが存在する場合のIN演算子
閲覧ありがとうございます。
「IN演算子、複合キー」 等で検索を行いましたが、知りたい情報を見つけ切れなかったので投稿させていただきました。
SQLserver2005でのWhere句の書き方について悩んでます。
以下のテーブルからのデータを取得する方法、ご解答いただければ幸甚です。
食べ物テーブル
名前|品種|ID|ジャンル|
------------------------
りんご|品種1|001|果物|
りんご|品種2|002|果物|
ごぼう|品種1|003|野菜|
ごぼう|品種2|004|野菜|
IDはユニークとなっていて、
主キーは「名前」と「品種」で複合キーになっているとします。
クエリで、特定の1行を複数同時に取得したいと考えてます。
◆IDを条件とする場合
IN演算子を使う
where IN('001','002','004') と指定
期待値:
りんご|品種1|001|果物|
りんご|品種2|002|果物|
ごぼう|品種2|004|野菜|
検索結果:
りんご|品種1|001|果物|
りんご|品種2|002|果物|
ごぼう|品種2|004|野菜|
◆「名前」「品種」を指定する場合
IN演算子を使う
where IN('りんご',ごぼう) and IN('品種1','品種2')
期待値:
りんご|品種1|001|果物|
りんご|品種2|002|果物|
ごぼう|品種2|004|野菜|
検索結果:
りんご|品種1|001|果物|
りんご|品種2|002|果物|
ごぼう|品種1|003|野菜|
ごぼう|品種2|004|野菜|
当然といえば当然なのですが、
期待値の通りに取得するには以下のように記述するしかないのでしょうか。
Where (名前 = 'りんご' and 品種 = '品種1')
or (名前 = 'りんご' and 品種 = '品種2')
or (名前 = 'ごぼう' and 品種 = '品種2')
.
.
.
.
取得したい行が増えれば増えるほど
記述が億劫になってきました。。。
ほかにいいクエリの記述方法があれば教えてください。
Oracleであれば、良い具合に 複合キーの同時指定をできると聞いたのですが、SQLserverには存在しないのでしょうか?
よろしくお願い致します。