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

kub*_*uba 3 mysql sql select where

这两个查询的结果如何可能:

SELECT * FROM `workers` WHERE `name` = 'Smith`
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM `workers` WHERE NOT `name` = 'Smith`
Run Code Online (Sandbox Code Playgroud)

不总和到整个表workers

Qua*_*noi 7

因为NULLname字段中没有进入任何一个查询.

在三元逻辑中SQL使用,NULL = 'Smith'并且NOT NULL = 'Smith'都评估NULL和过滤掉.

使用NULL-safe比较运算符,<=>:

SELECT * FROM `workers` WHERE `name` <=> 'Smith`
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM `workers` WHERE NOT `name` <=> 'Smith`
Run Code Online (Sandbox Code Playgroud)