我有一个名为match_lineup_substitute
的表,该表具有以下记录:
player_substitute_id | player_substituted_id | match_id |
90930 NULL 2807486
我想检查记录是否存在,所以我写了这个查询:
SELECT COUNT(*) FROM `match_lineup_substitute`
WHERE match_id = 2807486 AND
player_substitute_id = 90930 AND player_substituted_id = null
这将返回:0
发生了什么事?
答案 0 :(得分:1)
答案 1 :(得分:1)
更改自
player_substituted_id = null
到
player_substituted_id IS NULL
如果要在字段中检查null
的值,则必须在where子句中使用IS NULL
。
答案 2 :(得分:0)
在MySQL中,您应该使用IS NULL
(或IS NOT NULL
)来评估一个值是否为null,而不是使用算术比较运算符。
在您的示例中,您应该替换
AND player_substituted_id = null
具有:
... AND player_substituted_id IS NULL
您可以在官方文档的Working with NULL values部分中详细了解它。
...
要测试是否为NULL,请使用 IS NULL 和 IS NOT NULL 运算符(...)
...
您不能使用算术比较运算符(例如=,<或<>)测试NULL。
答案 3 :(得分:0)
NULL
不是一个值(将其视为“未知值”),因此column = NULL
始终返回NULL
。
NULL
AND
某物返回NULL
因此您的WHERE
条件不会返回TRUE
(因为它返回NULL),因此未选择该行。
改为使用column IS NULL
。
请注意,如果您比较两列,则同样如此:column1 = column2
将为NULL
,其中column1
或column2
为NULL
的每一行。 / p>
请参阅https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html