2017-01-10 9 views
0

私はこれを他のDBMS(OracleまたはMySQL ...実際には覚えていない)でこれまでにやっており、可能であれば、SQL Serverでこれを行うことができます。SQL Server - (<列の値の一覧>)内の<複数の列>

たとえば、A、B、C、...などのように複数の列を持つテーブルがあるとします。この表からA、B、Cの列に値の特定のセットを表示するか、言い換えれば、値の組み合わせの組み合わせ。例えば

、私は以下の組み合わせのいずれかに一致するすべてのレコード取得したい:可能な組み合わせのリストは、(内側のSELECTのオプションを含む)、かなり長くなる可能性があるので、

A   B   C 
    1   'Apples' '2016-04-12' 
56   'Cars'  '2014-02-11' 
.... 

それを述べたように、私は過去にこの型の構築物を使用していたし、それはのようなものだったよう

WHERE (A = 1 AND B = 'Apples' and C = '2016-04-12') OR 
     (A = 56 AND B = 'Cars'  and C = '2014-02-11') OR 
     ... 

のようなものを使用することは実用的ではありません

[ほとんどの場合、この構文が間違っているが、それは私が探しているものを示し]

また、私はむしろ、動的SQLの使用を避けるだろう。

ので、質問は次のようになります。

  1. は、SQL Serverでこのなんとかですか?

  2. 答えがYESの場合、SELECTはどのようにフレーズされるべきですか?

ありがとうございます。

答えて

2

あなたはJOIN

SELECT m1.* 
FROM MyTable m1 
     JOIN MYOtherTable m2 
     ON m1.A = m2.A 
      AND m1.B = m2.B 
      AND m1.C = m2.C 

またはExists

SELECT m1.* 
FROM MyTable m1 
WHERE EXISTS (SELECT 1 
       FROM MYOtherTable m2 
       WHERE m1.A = m2.A 
         AND m1.B = m2.B 
         AND m1.C = m2.C) 
+3

を使用することができるとOPの質問に答えるために:いいえ、それはSQL Serverで直接実行することはできません – Lamak

+0

私たちが、あなたに感謝の両方@Lamakとあなたの応答のためのPrdp。 'JOIN'オプションは、(私の謝罪)私が与えた(誤解を招く)例のために働くでしょうが、意図された質問のためにはうまくいかないでしょう(Lamakが指摘したように)。しかし、これは私に考えを与えてくれます。**可能な組み合わせのリストを使って一時テーブルを作成してください**。再度、ありがとう。 – FDavidov

関連する問題