1

我正在尝试DELETE根据两个匹配项执行声明。我一直0 Rows affected在 Sequel Pro (OSX) 中接收。

DELETE FROM devices WHERE device_id = '99999999999' AND state != 'PENDING'

device_id是一个VARCHAR并且状态是一个枚举列表。

注意:如果我删除AND state != 'PENDING',查询将执行删除。但是,我需要同时满足这两个标准。

这似乎是stateis的问题NULL

4

1 回答 1

2

NULL无法使用!=运算符(或类似运算符)进行比较,结果实际上是NULL. 那SELECT 'PENDING' != NULL实际上是选择NULL而不是FALSETRUE。如果该值可以是NULL您必须使用IS NULLIS NOT NULL检查并返回适当的布尔值。

AND (state != 'PENDING' OR state IS NULL)

文档:http ://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

于 2013-04-09T14:27:47.073 回答