2015-09-28 138 views
1

我试图做为什么这个SQL查询不能返回正确的行?

我试图返回在一列NULL0值,其中一个TIMESTAMP列前或等于当前时间行。

查询

SELECT * 
FROM `drafts` 
WHERE `leagueid`="vH8j5R0nlsBYhOUm" 
AND (`pick_uid`=NULL OR `pick_uid`='0') 
AND `deadline` >= "2015-9-28 13:43:00"; 

注:我使用了一个字符串值deadline而不是NOW()因为用户有不同的时区,所以我创建使用PHP函数gmdate,以确保该请求是时间戳以UTC表示。

表截图 Table Screenshot

我期待从该查询

所有行与id<=709返回了什么。

回答

5

可能是由于使用=NULL,尝试这种

SELECT * 
FROM `drafts` 
WHERE `leagueid`="vH8j5R0nlsBYhOUm" 
    AND (`pick_uid` IS NULL OR `pick_uid`='0') 
    AND `deadline` >= "2015-9-28 13:43"; 
+0

是的这有效!谢谢。为什么SQL不能识别NULL值为'='? – Ben

+0

@BenPearlKahan,算术运算符不允许'NULL',详情请参阅https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html – mynawaz

2

不可能测试对于NULL值与比较运算符,如=,<,或者<>。我们将不得不使用IS NULL和IS NOT NULL运算符来代替。

相关问题