Tsql 查询具有多个值的sql表

Tsql 查询具有多个值的sql表,tsql,distinct-values,Tsql,Distinct Values,我想从下面查询一个sql表 ID Val ------------- 1 5 1 7 1 8 1 9 2 5 2 7 2 9 3 1 3 5 这将返回以下一组结果 查询>从dbo.table中选择不同的ID,其中val位于(5,7,9) 我遇到一个问题,一行只能匹配子集中的一个val,而不是所有val…假设行是不同的: SELECT ID FROM your_table WHERE Val IN (5,7,9) GROUP BY ID HAVING COUNT(*) = 3 我不明白这个问题

我想从下面查询一个sql表

ID Val
-------------
1 5
1 7
1 8
1 9
2 5
2 7
2 9
3 1
3 5
这将返回以下一组结果 查询>从dbo.table中选择不同的ID,其中val位于(5,7,9)


我遇到一个问题,一行只能匹配子集中的一个val,而不是所有val…

假设行是不同的:

SELECT ID
FROM your_table
WHERE Val IN (5,7,9)
GROUP BY ID
HAVING COUNT(*) = 3

我不明白这个问题。。。有一个ID 1、2和3与Val 5关联。您希望在什么条件下从结果集中排除3?ID 3不包含值7和9。太好了,如果子集是动态生成的,那该怎么办?@John:那么您需要创建类似
(5,7,9)
的字符串,并更新
计数(*)=3中的3必须与项数匹配。因此,如果您有4个项目,您需要
COUNT(*)=4
。是的,这很有意义。我可能应该计算参数并将其传递给存储过程。如果我使用“不在”作为附加过滤器会怎么样。我是否必须将这些值的计数与前面的3个参数相加?计数(*)等于3+的等(不在参数中)
SELECT ID
FROM your_table
WHERE Val IN (5,7,9)
GROUP BY ID
HAVING COUNT(*) = 3