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 ;