SQL查询匹配列表中的所有值以进行评估

Mil*_*nis 7 sql t-sql sql-server

我有一个名称的表格SupplierCatalog (idProduct, idSupplier),我想检查供应商是否有产品清单,因为产品可以在一个或多个供应商中找到,例如:(10, 26, 40, 42, 50)检查(10,26,40,42,50)5(5).

我不知道从哪里开始,我试过了

SELECT idproduct 
FROM SupplierCatalog 
where idProduct IN (10, 26, 40, 42, 50) AND idSupplier = 5
Run Code Online (Sandbox Code Playgroud)

然后检查C#,如果返回的行数等于查询中传递的产品数量,它可以工作,但对我来说不合适.

有没有人知道如何获得我想要的结果,我只是一个TRUE如果所有匹配或FALSE如果至少一个不匹配.

Sal*_*n A 10

假设它idProduct, idSupplier是唯一的*,这是一个简单的查询:

SELECT 1
FROM SupplierCatalog
WHERE idProduct IN (10, 26, 40, 42, 50) AND idSupplier = 5
HAVING COUNT(*) = 5 -- this is the number of items in the above list
Run Code Online (Sandbox Code Playgroud)

这将返回0或1行,这是您检查代码所需的全部内容.

*如果允许/存在重复更改为 HAVING COUNT(DISTINCT idProduct) ...


pap*_*zzo 7

SELECT idproduct 
  FROM SupplierCatalog 
 WHERE idProduct IN (10, 26, 40, 42, 50) 
   AND idSupplier = 5 
 GROUP BY idproduct 
HAVING COUNT(*) = 5
Run Code Online (Sandbox Code Playgroud)

0行为false,1行为true

您可以删除AND idSupplier = 5并获取所有供应商