我遇到了mysql查询的问题。我想排除2的值。所以我想我会这样做:
table products
id | name | backorder
-------------------
1 | product1 | NULL
2 | product2 | NULL
3 | product3 | 2
SELECT name from `products` p
WHERE backorder <> '2'
但是,这并没有给出product1产品2的预期结果。它给出了一个空结果表。
另一方面,如果我使用
SELECT name from `products` p
WHERE backorder = '2'
然后它产生:product3。但我希望得到那些不等于2的记录。
某些内容无法使用&lt;&gt;'2'。可能是NULL值正在抛弃它吗?任何人都可以建议修复。提前谢谢!
答案 0 :(得分:55)
使用IS NULL
或IS NOT NULL
来比较NULL
值,因为它们只是未知。
SELECT name
from products p
WHERE backorder IS NULL OR backorder <> 2
答案 1 :(得分:9)
您可以使用:
SELECT `name` FROM `products` `p`
WHERE NOT `backorder` <=> '2'
或
SELECT `name` FROM `products` `p`
WHERE !(`backorder` <=> '2')
答案 2 :(得分:7)
很抱歉打开此
我们也可以使用
SELECT name
from products p
WHERE COALESCE(backorder,1) <> 2
答案 3 :(得分:-4)
试试这个并看看。
SELECT name from `products` p
WHERE backorder != '2'