【问题标题】:multiple sub-conditions in WHERE clause SQLWHERE 子句 SQL 中的多个子条件
【发布时间】:2019-02-09 14:52:42
【问题描述】:

我有一个表的以下示例,我希望从中获得 Year 为“2016”和“2017”的所有行,但希望从“2017”年中排除 CustID“AB17”和“AB18”。总共我应该得到 12 行。看到这个fiddle

示例:

SQL:

SELECT * FROM testing
WHERE Year In ('2016','2017') 
AND (CustID NOT In ('AB17','AB18') AND Year = '2017');

表:

Year    CustID  Revenue
2016    AB12    10
2016    AB13    11
2016    AB14    12
2016    AB15    13
2016    AB16    14
2016    AB17    15
2016    AB18    16
2017    AB12    10
2017    AB13    11
2017    AB14    12
2017    AB15    13
2017    AB16    14
2017    AB17    15
2017    AB18    16
2018    AB12    17
2018    AB13    18
2018    AB14    19
2018    AB15    20
2018    AB16    21
2018    AB17    22
2018    AB18    23

有什么建议吗?

【问题讨论】:

  • AND NOT (CustID In ('AB17','AB18') AND Year = '2017')?

标签: sql where-clause multiple-conditions


【解决方案1】:

这应该可行:

WHERE 
Year = '2016' 
OR (Year = '2017'  AND CustID NOT In ('AB17','AB18'))

【讨论】:

    【解决方案2】:

    一个相当直接的翻译:

    年份是“2016”和“2017”,但希望从“2017”年中排除 CustID“AB17”和“AB18”。

    是:

    where year in (2016, 2017) and
          not (year = 2017 and custID in ('AB17', 'AB18'))
    

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 2015-09-29
      • 2019-11-16
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多