如何过滤在sql中具有完全指定值的表

时间:2014-12-06 00:47:53

标签: sql sql-server tsql subquery

我需要使用精确值过滤表格。 我现在用Google搜索了近一天,我想知道你们是否可以帮助我

我有一张这样的表:

    ID  |  group ID  | tax Id
    -------------------------
    1   |  1         | 1
    2   |  2         | 1
    3   |  2         | 2
    4   |  3         | 2
    5   |  3         | 3
    6   |  3         | 4
    7   |  4         | 1
    8   |  4         | 4
    9   |  5         | 2
   10   |  5         | 4
   11   |  6         | 3
   12   |  6         | 4

我只需要在税ids正好是2,3和4时获得群组ID,即群组ID 3 如果我把WHERE TAX_ID放入(2,3,4),我会将这些税组改为3,5,6 我想要的只是税务组3 我希望这不是一个重复的问题,因为我在谷歌时找不到它。

1 个答案:

答案 0 :(得分:2)

你需要在group_id列和group by子句中使用having子句来计算不同的tax_id,使其等于3,其中tax id为2或3或4

不存在将处理组中应该只包含给定集合的条件,如果元素而不是任何其他元素

<强> SQL Fiddle

SELECT [group_ID]
FROM Table1 T
WHERE [tax_Id] in (2,3,4)
And not exists
( select 1 from Table1 E
Where T.group_id = E.group_id
And tax_id not in (2,3,4)
)
Group by group_id
Having count(distinct tax_id) =3