【问题标题】:Filter with Combining and Negating Conditions with AND, OR, and NOT in T-SQL在 T-SQL 中使用 AND、OR 和 NOT 组合和否定条件进行筛选
【发布时间】:2020-07-24 00:21:14
【问题描述】:

我想根据某些条件组合过滤表格。请参考以下代码:

SELECT COUNT(*)
FROM #New
WHERE (
          (
              ClientSource_No <> 283
              AND Suppress_Fg <> 1
          )
          OR
          (
              ClientSource_No <> 289
              AND Suppress_Fg <> 1
          )
      );


SELECT COUNT(*)
FROM #New
WHERE (
          (
              ClientSource_No <> 283
              OR ClientSource_No <> 289
          )
          AND Suppress_Fg <> 1
      );

我尝试以 2 种不同的方式过滤表格。我想根据 2 个条件过滤表格

  1. ClientSource_No = 283 and Suppress_Fg = 1 则排除记录

  2. ClientSource_No = 289 and Suppress_Fg = 1 则排除记录。

当我执行上述查询时,它会过滤掉所有具有Suppress_Fg = 1 的记录。

我不想自行加入表或使用NOT EXITS 并排除这些记录。

【问题讨论】:

    标签: sql-server tsql count where-clause


    【解决方案1】:

    我认为这是表达条件的最简单方式:

    SELECT COUNT(*)
    FROM #New
    WHERE NOT ( ClientSource_No IN (283, 289) AND Suppress_Fg = 1 )
    

    或如:

    WHERE lientSource_No NOT IN (283, 289) OR Suppress_Fg <> 1 
    

    【讨论】:

      【解决方案2】:

      您可以将此表述为not 条件,例如:

      where not (ClientSource_No in (283, 289) and Suppress_Fg = 1)
      

      另一方面,您要使用的逻辑需要or 条件而不是and

      where ClientSource_No not in (283, 289) or Suppress_Fg <> 1
      

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 2014-11-23
        相关资源
        最近更新 更多