別のタイトルは次のようになります: 複数行の存在を確認しますか?
SQL と C# の組み合わせを使用して、リスト内のすべての製品がテーブルに存在する場合、メソッドが true を返すようにします。すべてSQLで実行できる場合は、それが望ましいでしょう。productID
次の SQL を使用して、シングルが存在するかどうかを返すメソッドを作成しました。
SELECT productID FROM Products WHERE ProductID = @productID
これが行を返す場合、c# メソッドは true を返し、それ以外の場合は false を返します。
今、私は製品 ID のリストを持っているかどうか疑問に思っています (通常は 20 未満の巨大なリストではありません)。すべての製品 ID が存在する場合は行を返し、1 つ以上の製品 ID が存在しない場合は行を返さないクエリを作成するにはどうすればよいですか?
(Maybe something involving "IN" like:
SELECT * FROM Products WHERE ProductID IN ('1', '10', '100', 'ABC'))
編集:
結果がどのように表現されるかは、私にとって重要ではありません。1
クエリがや0
、空の結果セットまたは空でない結果セットを返すかどうか、true または false は問題ではありません。1) 読みやすく、理解しやすく、2) パフォーマンスの高い回答を希望します。
製品IDのリストをSQLと連結することを想定していました。明らかに、これはコードを SQL インジェクションに開放します (製品 ID は実際にはvarchar
. この場合、可能性はわずかですが、その可能性は避けたいと考えています)。したがって、これを回避する方法があれば、それはより良いでしょう。SQL Server 2005 を使用しています。
プロダクトIDはvarchar