sql - TSQL Where 子句满足多个条件

标签 sql sql-server t-sql stored-procedures conditional-statements

我有一个基本的选择查询,它将队列的结果拉入我们的页面。我正在尝试向 where 子句添加一些逻辑,以防止记录在包含一组特定值时显示。

WHERE (
        (L.requestType <> 'Check')
        AND (L.requestStatus <> 'New Request')
        AND (DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) between 0 and 48)
      )

在上面的示例中,我不想包含具有全部三个数据点的记录。

在进行一些测试时,它会排除所有“检查”,即使这些记录也不符合其他两项条件。

如何才能使我的 where 子句满足所有条件,而不执行看似 or 的操作?

最佳答案

你需要

WHERE NOT (L.requestType = 'Check'
           AND L.requestStatus = 'New Request'
           AND (DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) between 0 and 48
          )

这相当于

WHERE (L.requestType <> 'Check'
       OR L.requestStatus <> 'New Request'
       OR DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) not between 0 and 48
       )

关于sql - TSQL Where 子句满足多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41364915/

相关文章:

java - 使用java字符串的两个日期语句之间的SQL

mysql - 使用 MySQL 将数据插入表时出错

sql-server - SQL Server 列级安全性 - 是否可以在列上拒绝 SELECT,但是,它是否可用于该表的 WHERE 子句?

sql-server - SQL Server : if I don't specify a RECOVERY mode for a RESTORE DATABASE, 默认是什么?

sql - T SQL 将 Unix 刻度转换为日期时间

mysql - 我如何优化我的 mysql 查询?

sql - Hive 和 Pig 中的不平等加入

asp.net - 大型站点不将 MySQL 与 ASP.NET 一起使用的原因是什么?

sql-server - 长度参数无效——过程中包含字符串搜索

SQL ServerWhere子句Case语句?