SQL - 具有两组不同条件的 WHERE 子句?

问题描述 投票:0回答:2

我正在 SQL Server 2016 上使用 Microsoft SQL 管理工作室。我试图从两组不同的条件中筛选出一些结果。第一组完成繁重的工作,但我只需要添加第二组条件,仅过滤掉实际上未被第一组条件过滤掉的几行。需要过滤的其他行必须满足额外条件的精确组合,否则将过滤太多行。

所以我有这个:

SELECT
    postdate
    ,costarea
    ,storeloc
    ,user
    ,movetype
    ,account
FROM table1
WHERE
--Condition 1
(postdate > '12/31/2015'
AND costarea <> 'None'
AND storeloc <> '50A')

OR

--Condition 2
(account <> '5500'
AND user <> 'JDOE'
AND movetype <> '405')

基本上,我需要过滤条件 1 下的行,然后过滤将按条件 2 过滤但未按条件 1 过滤的几行,因为它们通过了这些条件。解决这个问题的最佳方法是什么?

sql where-clause sql-server-2016
2个回答
2
投票

我认为你正在尝试的是......

where
   NOT (
         condition1
            or
         condition2
       )

但是你必须通过这样做来扭转逻辑

where
   NOT
      (
         (   postdate < '2016-01-01'
         AND costarea = 'None'
         AND storeloc = '50A' )

            OR
         (   account = '5500'
         AND user = 'JDOE'
         AND movetype = '405')
      )

0
投票

我按照上述操作,如果我能知道此查询的最终结果是什么,请

© www.soinside.com 2019 - 2024. All rights reserved.