【问题标题】:Querying sql table with multiple values查询具有多个值的sql表
【发布时间】:2011-05-29 01:07:08
【问题描述】:

我想从下面查询一个sql表

ID Val
-------------
1 5
1 7
1 8
1 9
2 5
2 7
2 9
3 1
3 5

这将返回以下结果集 query > select distinct ID from dbo.table where val in (5,7,9)

result
--------
ID
1
2

我遇到了一个问题,单行只能匹配子集中的一个 val,而不是全部...

【问题讨论】:

  • 我不明白这个问题...有一个 ID 1、2 和 3 与 5 的 Val 相关联。您想在什么条件下从结果集中排除 3?
  • ID 3 不包含值 7 和 9。

标签: tsql distinct-values


【解决方案1】:

假设行是不同的:

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

【讨论】:

  • 很好,如果子集是动态生成的呢?
  • @John:那么你需要创建像(5,7,9) 这样的字符串,并且更新COUNT(*) = 3 中的3 必须匹配项目的数量。所以如果你有 4 件物品你需要COUNT(*) = 4.
  • 是的,这是有道理的。我可能应该计算参数并将其传递给存储的过程。如果我将“不在”用作附加过滤器会怎样。我是否必须将这些值的计数与前 3 个参数一起添加?等具有 count(*) = 3+(不在参数中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2018-05-30
  • 1970-01-01
相关资源
最近更新 更多