我的表中有如下所示的数据。
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 of sale 它应该返回以下内容:
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'
但这并没有奏效(正如预期的那样)。谁能告诉我如何实现这一目标?
最佳答案
你想要or
:
SELECT *
FROM pledger
WHERE dcno <> 1 OR pledger.etype <> 'sale'
bool 逻辑表示 NOT (X AND Y)
在逻辑上等同于 NOT X OR NOT Y
.所以,NOT (dcno = 1 AND etype = 'sale')
是dcno <> 1 OR etype <> 'sale'
.注意:这不需要 NULL
考虑在内,但这与此处无关。
这是 SQLFiddle
关于MySQL : Select all the rows except those having the specified values in columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323334/