您好,我有一个数据库,我想要选择所有行,但不包括满足两个条件的记录。我无法弄清楚如何编写执行此操作的where子句。
举一个例子,表格是:
Name | Date | Country
我想选择名称为Dave且日期为>的行以外的所有行。 20180101。所以名称为Dave但日期为< = 20180201的行应包括在日期为>的行中。 20180101,这个名字不过是戴夫。
答案 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),那么该行将不会被返回。