我正在尝试根据两个匹配项执行 DELETE
语句。我在 Sequel Pro (OSX) 中一直收到 0 Rows affected
。
DELETE FROM devices WHERE device_id = '99999999999' AND state != 'PENDING'
device_id
是一个 VARCHAR
,state 是一个枚举列表。
注意:如果我删除 AND state != 'PENDING'
,查询将执行删除。但是,我需要同时满足这两个条件。
这似乎是 state
is NULL
的问题。
最佳答案
NULL
无法使用 !=
运算符(或类似运算符)进行比较,结果实际上将为 NULL
。即 SELECT 'PENDING' != NULL
实际上选择了 NULL
而不是 FALSE
或 TRUE
。如果该值可以是 NULL
,您必须使用 IS NULL
或 IS NOT NULL
来检查并返回适当的 bool 值。
AND (state != 'PENDING' OR state IS NULL)
文档:http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
关于mysql - SQL 删除语句匹配条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904570/