我的表中的数据如下所示。
dcno | etype | debit | credit |
------+-------+-------+--------+
1 | sale | 1200 | 1000 |
2 | sale | 1000 | 600 |
3 | sale | 1100 | 9001 |
1 | purc | 1274 | 1281 |
4 | sale | 1119 | 2811 |
6 | sale | 2345 | 233 |
2 | purc | 4467 | 121 |
3 | sale | 8885 | 1214 |
我想要的是一个不考虑该行的查询
拥有指定的dcno
和etype
。例如,如果我指定我不希望行具有dcno
1和etype的销售应返回以下内容:
dcno | etype | debit | credit |
------+-------+-------+--------+
2 | sale | 1000 | 600 |
3 | sale | 1100 | 9001 |
1 | purc | 1274 | 1281 |
4 | sale | 1119 | 2811 |
6 | sale | 2345 | 233 |
2 | purc | 4467 | 121 |
3 | sale | 8885 | 1214 |
我尝试了以下
SELECT *
FROM pledger
WHERE dcno <> 1 AND pledger.etype <> 'sale'
但这并没有奏效(如预期的那样)。任何人都可以告诉我,我怎么能实现这一目标?
答案 0 :(得分:3)
您想要or
:
SELECT *
FROM pledger
WHERE dcno <> 1 OR pledger.etype <> 'sale'
布尔逻辑表示NOT (X AND Y)
在逻辑上等同于NOT X OR NOT Y
。因此,NOT (dcno = 1 AND etype = 'sale')
是dcno <> 1 OR etype <> 'sale'
。注意:这不会考虑NULL
,但这与此无关。
以下是SQLFiddle