我遇到了一些我无法解决的SQL查询问题。
SELECT * FROM MasterList WHERE Requested <> "Yes";
如果我在桌面上运行上述查询,则会返回60条记录。但是应该接近300.我认为问题是,某些记录在Requested字段中只是空白而其他记录是NULL。但我认为NULL仍然算不等于&#34;是&#34;不是吗?如果没有,有没有办法解决这个问题而不必回头而且空白&#39;所有的空字段?
答案 0 :(得分:2)
比较中不计入空值,如果要返回null
个值,则需要执行以下查询:
SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL;
答案 1 :(得分:2)
<=>
NULL安全相等。此运算符执行与=运算符类似的相等比较,但如果两个操作数均为NULL,则返回1而不是NULL;如果一个操作数为NULL,则返回0而不是NULL。
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL
在您的情况下使用:
SELECT * FROM MasterList WHERE not Requested <=> "Yes"
答案 2 :(得分:0)
这是因为null <> 'Yes'
表达式的计算结果为null
,因此您应该添加单独的is null
检查以包含在结果集中满足此条件的记录:
select * from MasterList where Requested <> "Yes" or Requested is null
P.S。:null
与任何内容的比较,即使是null
本身,也始终返回null
。