delete FROM tuan_details where tuan_id<>14
这应该只保留tuan_id等于14的那些行,但是tuan_id为null的行也会被保留。
为什么会这样?
答案 0 :(得分:1)
NULL
在SQL中很特别。您拥有的条件:tuan_id <> 14
仅适用于TRUE
以外的值14
。对于tuan_id
为NULL
的行,请执行以下操作:
tuan_id <> 14
将是:
NULL <> 14
评估为:
UNKNOWN
所以这些行不已删除。评估为WHERE
时,TRUE
条件得到满足。他们评估为FALSE
或UNKNOWN
时会被拒绝。
SQL使用 3-valued logic
因此,如果您想删除Null,也可以使用以下语句:
DELETE
FROM tuan_details
WHERE tuan_id <> 14
OR tuan_id IS NULL ;
答案 1 :(得分:0)
null永远不会包含在这些比较中,而是使用null。
答案 2 :(得分:0)