检查记录是否存在,返回错误结果

时间:2018-11-20 13:39:29

标签: mysql sql

我有一个名为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

发生了什么事?

4 个答案:

答案 0 :(得分:1)

要检查null的值,请使用is

... and player_substituted_id IS NULL

The DOC

答案 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,其中column1column2NULL的每一行。 / p>

请参阅https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html