2015-09-28 136 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運算符來代替。

相關問題