MySql没有按预期返回结果

时间:2010-11-25 05:22:56

标签: mysql sql

delete FROM tuan_details where tuan_id<>14

这应该只保留tuan_id等于14的那些行,但是tuan_id为null的行也会被保留。

为什么会这样?

3 个答案:

答案 0 :(得分:1)

NULL在SQL中很特别。您拥有的条件:tuan_id <> 14仅适用于TRUE以外的值14。对于tuan_idNULL的行,请执行以下操作:

tuan_id <> 14

将是:

NULL <> 14

评估为:

UNKNOWN

所以这些行已删除。评估为WHERE时,TRUE条件得到满足。他们评估为FALSEUNKNOWN时会被拒绝。

SQL使用 3-valued logic


因此,如果您想删除Null,也可以使用以下语句:

DELETE 
FROM tuan_details 
WHERE tuan_id <> 14
   OR tuan_id IS NULL ;

答案 1 :(得分:0)

null永远不会包含在这些比较中,而是使用null。

答案 2 :(得分:0)

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

您还可以在查询中添加或条件