MySQL - 来自'SELECT WHERE STH'和'SELECT WHERE NOT STH'的结果不总和为完整表

时间:2010-12-27 14:28:36

标签: sql mysql select where

这两个查询的结果如何:

SELECT * FROM `workers` WHERE `name` = 'Smith`

SELECT * FROM `workers` WHERE NOT `name` = 'Smith`

不与整个表workers求和?

1 个答案:

答案 0 :(得分:7)

因为NULL字段中的name没有进入任何一个查询。

SQL使用的三元逻辑中,NULL = 'Smith'NOT NULL = 'Smith'都评估为NULL并被过滤掉。

使用NULL - 安全比较运算符<=>

SELECT * FROM `workers` WHERE `name` <=> 'Smith`

SELECT * FROM `workers` WHERE NOT `name` <=> 'Smith`