我在postgresql
中有一个查询,它生成:
statusid,qty
17 25
30
17 45
18 20
我想删除所有
statuis
是deleted
(17
)的行,并保留NULL
的行。我所做的是:
WHERE statuid not in (select statusid from statuses where statusname='deleted')
我期望的是:
statusid,qty
30
18 20
但我得到的是:
statusid,qty
18 20
有没有其他的接线员可以得到这个指定的结果?
最佳答案
不能将NULL
与任何值进行比较(NOT IN
比较),必须使用IS NULL
:
WHERE statusid IS NULL OR statusid not in (select statusid from statuses where statusname='deleted')
NULL
既不等于也不等于任何其他值,即使使用NULL
。它是未定义的。