delete FROM tuan_details where tuan_id<>14
這應該只保留那些tuan_id等於14的行,但tuan_id爲null的行也被保留。MySql沒有按預期返回結果
這是爲什麼?
delete FROM tuan_details where tuan_id<>14
這應該只保留那些tuan_id等於14的行,但tuan_id爲null的行也被保留。MySql沒有按預期返回結果
這是爲什麼?
null從未包含在這些比較中,而是使用null。
NULL
是SQL特殊。您擁有的條件:tuan_id <> 14
僅適用於14
以外的值。對於行時,tuan_id
是NULL
,則:
tuan_id <> 14
將是:
NULL <> 14
計算結果爲:
UNKNOWN
所以這些行是不刪除。當他們評估爲TRUE
時,WHERE
條件得到滿足。當他們評估爲FALSE
或UNKNOWN
時,他們被拒絕。
SQL使用3-valued logic
所以,如果你想刪除空白點,以及,你可以用這個語句:
DELETE
FROM tuan_details
WHERE tuan_id <> 14
OR tuan_id IS NULL ;