[英]Simple MySQL SELECT Query AND Clause
評論表:
+--------------------+
| ID | DESC | MISC |
+--------------------+
| 1 | EDR | NULL |
| 2 | EDR | Mumba |
| 3 | EDR | NULL |
| 4 | YTO | Mumba |
| 5 | YTO | Mumba |
+--------------------+
詢問:
SELECT ID
FROM Reviews
WHERE DESC = 'EDR' AND MISC <> 'Sent'
我期待我的查詢返回:
+----+
| ID |
+----+
| 1 |
| 2 |
| 3 |
+----+
但相反,我得到:
+------+
| ID |
+------+
| NULL |
+------+
是什么賦予了?
幾乎所有與NULL
的比較都會返回NULL
這被視為FALSE
甚至<>
。
因此,使用NULL
安全比較:
SELECT ID
FROM Reviews
WHERE DESC = 'EDR' AND NOT (MISC <=> 'Sent')
而且,我要指出,SQL 中有一個標准的NULL
安全比較。 在您的情況下,那將是: MISC IS NOT DISTINCT FROM 'Sent'
。 但是 MySQL 有它自己的語法。
值不能等於 NULL,也不能不同於 NULL。
如果您將 NULL 視為“未知”,則更容易理解。
但是你可以檢查IS NULL
SELECT ID
FROM Reviews
WHERE DESC = 'EDR'
AND (MISC IS NULL OR MISC <> 'Sent')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.