编写SQL where子句以根据两个条件排除行

时间:2018-01-17 22:34:53

标签: sql where-clause

您好,我有一个数据库,我想要选择所有行,但不包括满足两个条件的记录。我无法弄清楚如何编写执行此操作的where子句。

举一个例子,表格是:

Name | Date | Country

我想选择名称为Dave且日期为>的行以外的所有行。 20180101。所以名称为Dave但日期为< = 20180201的行应包括在日期为>的行中。 20180101,这个名字不过是戴夫。

2 个答案:

答案 0 :(得分:1)

这是De Morgan's Law有用的地方。它表示!(A && B)也可以表达为!A || !B,反之亦然:!A || !B可以是!(A && B)
此外,!(A || B)!A && !B!A && !B!(A || B)

对于您想要的这个问题:NOT ('Dave' AND >'20180101'),它匹配上面的第一个案例。应用De Morgan定律会给你NOT 'Dave' OR <='20180101'

在SQL查询中使用它,如下所示:

SELECT *
FROM [table]
WHERE [Name] <> 'Dave' OR [Date] <= '20180101'

答案 1 :(得分:0)

select *
from table
where name <> 'Dave' OR date <= '2018-01-01'

获取名称不是dave或日期不是X的所有行。如果两个条件都失败(dave和X),那么该行将不会被返回。