忽略具有某些属性的所有应用程序

时间:2019-06-17 23:19:04

标签: sql sql-server

我正在处理一个查询,以查找不触发某些规则的所有应用程序。触发的每个规则都记录在与应用程序ID绑定的单独行中。

数据如下:

ID  RuleNumber

2   1
2   2
2   3
3   2
3   3
4   1
4   5

这是我尝试过的:

SELECT ID,RuleNumber FROM Table WHERE RuleNumber not in (2,3)

但是,这只会返回没有这些规则编号的行。我希望它跳过附加了那些RuleNumbers之一的任何ID,所以我的结果应该是与ID 4相关的行。

2 个答案:

答案 0 :(得分:1)

SELECT  DISTINCT ID
FROM    Table T1
WHERE   NOT EXISTS (
                     SELECT 1
                     FROM   Table T2
                     WHERE  T1.ID = T2.ID
                     AND    T2.RuleNumber IN (2,3)
                   );

答案 1 :(得分:0)

您可以使用子查询查找触发规则的ID,然后使用该子ID排除这些ID ...

SELECT DISTINCT ID
  FROM Table
 WHERE ID NOT IN
 (
  SELECT ID FROM Table WHERE RuleNumber IN (2,3)
 )