簡體   English   中英

簡單的 MySQL SELECT 查詢和子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM