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) ...
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并获取所有供应商