另一个标题可能是:检查是否存在多行?
结合使用 SQL 和 C#,如果列表中的所有产品都存在于表中,我希望方法返回 true。如果它可以在 SQL 中完成,那将是可取的。我编写了一个方法,productID
使用以下 SQL 返回单个是否存在:
SELECT productID FROM Products WHERE ProductID = @productID
如果这返回一行,则 c# 方法返回 true,否则返回 false。
现在我想知道我是否有一个产品 ID 列表(请注意,不是一个庞大的列表,通常在 20 以下)。如何编写一个查询,如果所有产品 ID 都存在则返回一行,如果一个或多个产品 ID 不存在则不返回行?
(Maybe something involving "IN" like:
SELECT * FROM Products WHERE ProductID IN ('1', '10', '100', 'ABC'))
编辑:
结果如何表达对我来说并不重要。查询是否返回1
or 0
、空结果集或非空结果集,true 或 false 无关紧要。我更喜欢 1) 易于阅读和理解和 2) 高性能的答案
我设想将产品 ID 列表与 SQL 连接起来。显然,这会将代码打开到 SQL 注入(产品 id 实际上是varchar
. 在这种情况下,机会很小,但仍然希望避免这种可能性)。所以如果有办法解决这个问题会更好。使用 SQL Server 2005。
产品 ID 是varchar