假设我们在Sql server中有一个名为table1的表,其中包含以下结构和数据:
TableName:Parts
PartCode PartName
-------------------
10 Dashboard
11 Mirror
12 Seat
13 Cord
TableName:CarParts
CarCode PartCode
--------------------
01 10
01 11
01 12
02 11
02 12
03 10
03 11
03 13
如何获得包含 ALL PartCodes的CarCode,我在数据结构中列出了类似winform(C#)中的datagridview?我应该说我在Sql server中编写了一个UDF,它接受1个参数(CarCode)并返回与之相关的所有PartCodes的CSV。
编辑: 例如,我的PartCode列表有2个PartCodes:10,12 查询应该返回包含10和12的CarCode,并且它只是CarCode“01”而不是其他。 我希望这能澄清我的意思。
答案 0 :(得分:1)
您可以比较
的计数如果匹配,则拥有正确的CarCode
这假设一个输入表
SELECT
CP.CarCode
FROM
CarParts CP
JOIN
@MyParts mp ON CP.PartCode = mp.PartCode
GROUP BY
CP.CarCode
HAVING
COUNT(CP.*) = COUNT(DISTINCT mp.PartCode)
这假设是值得的值
SELECT
CP.CarCode
FROM
CarParts CP
WHERE
CP.PartCode IN (10, 12)
GROUP BY
CP.CarCode
HAVING
COUNT(CP.*) = 2 --numbr of IN conditions
您应该可以将CSV内容用于这些
答案 1 :(得分:0)
SELECT cp.CarCode
FROM CarParts cp
EXCEPT
SELECT cp.CarCode
FROM CarCode cp
LEFT JOIN @MyParts mp ON cp.PartCode = mp.PartCode
WHERE mp.PartCode IS NULL