mysql select query无法获取具有null值的数据

时间:2016-06-07 04:46:05

标签: mysql null

enter image description here

在此表中,如果我进行以下查询

select * from table where order_id != 1

我想,我应该排第18行&但相反,查询无法获取任何行。

我可以像这样重写查询

select * from table where (order_id != 1 or order_id is null)

并且它会获取预期的数据,但是第一个查询不应该能够获取行18 & 19吗?

3 个答案:

答案 0 :(得分:5)

来自Docs

NULL值可能会令人惊讶,直到您习惯它为止。从概念上讲,NULL表示“a missing unknown value”,它的处理方式与其他值略有不同。

要测试NULL,请使用IS NULLIS NOT NULL运算符

您不能使用=, <, or <>等算术比较运算符来测试NULL

由于与NULL进行任何算术比较的结果也是NULL,因此您无法从此类比较中获得任何有意义的结果。

答案 1 :(得分:1)

Null是Null不是无限数!

解决方案:

  • 设置 order_id 的默认值;特别是如果它是一个外键并且它应该与其他表连接。
  • 使用 IFNULL 功能将您的查询更改为:

    select * from table where ifnull(order_id,-1) != 1
    
  • 答案 2 :(得分:0)

    SQL运算符!=<>仅适用于值。 NULL不是一个价值 - 它只是缺乏价值。
    检查这个答案,你可能会觉得这很有用: Not equal <> != operator on NULL