我正在尝试根据两场比赛执行DELETE
语句。我一直在Sequel Pro(OSX)中收到0 Rows affected
。
DELETE FROM devices WHERE device_id = '99999999999' AND state != 'PENDING'
device_id
是VARCHAR
,州是ENUMERATED列表。
注意:如果我删除AND state != 'PENDING'
,查询将执行删除。但是,我需要在两个标准上进行匹配。
这似乎是state
NULL
的问题。
答案 0 :(得分:2)
NULL
无法使用!=
运算符(或类似运算符)进行比较,结果实际上为NULL
。这是SELECT 'PENDING' != NULL
实际选择NULL
而不是FALSE
或TRUE
。如果值为NULL
,则必须使用IS NULL
或IS NOT NULL
来检查并返回相应的布尔值。
AND (state != 'PENDING' OR state IS NULL)
文档:http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html