同时匹配两个条件的 SQL Where 子句

标签 sql sql-server

我不知道如何用我的问题标题来表达我要问的问题。

如果我的 where 子句的组合为真,我有一个 SELECT 查询,该查询不得返回任何行。这是我的示例代码:

SELECT 
 *
FROM
 MyTable m1
WHERE
 (m1.User != '1' AND m1.Status != '1')

但是我想问SQL的是: “仅当用户不是“1”并且其状态同时不是“1”时才返回行。如果此组合不为真,则可以返回这些行” .

因此,如果用户为“1”且状态为“2”,则可以返回这些行。

看起来很简单,但我无法想象如何做到这一点...请帮忙?

最佳答案

刚刚回答了我自己的问题......这就是答案。 “OR”不会测试两者的组合是否正确。

解决方案:

SELECT 
 *
FROM
 MyTable m1
WHERE NOT
 (m1.User = '1' AND m1.Status = '1')

因为两个条件都必须为真才能不返回行。两者 = AND,任一 = OR。

关于同时匹配两个条件的 SQL Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162575/

相关文章:

sql - 设置日期时间变量的时间部分

mysql - 计算不同折扣范围的产品

php - 2 个不同的值存储在数据库的一列下

sql-server - 数据库加密 : MSSQL 2008+ Database Encryption and use in Coldfusion

sql - 获取特定行的最高计数

sql-server - Azure 中的 Quartz.net : "tables without a clustered index are not supported" when deleting a job

mysql - 查找多表 MySQL 数据库中缺失的行

sql - 为什么 SELECT * 被认为是有害的?

SQL查找唯一组合和出现次数

sql-server - 我什么时候需要处理立方体?