mysql - SQL 删除语句匹配条件

标签 mysql sql

我正在尝试根据两个匹配项执行 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 而不是 FALSETRUE。如果该值可以是 NULL,您必须使用 IS NULLIS 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/

相关文章:

Java-MyBatis 与 HQL/其他通用 SQL 引擎或转换 SQL 的 API

php - 如何在 SQLquery 中查询包含范围的列中的数据

sql - 从 SQL 表中的 JSON 列检索数据

c# - ASP MVC 中的原始 SQL 'Insert Into'

mysql - 按 3 个表的 JOIN 的 AVG 标记进行 SQL 分组

php - SQL 查询返回错误结果

mysql - 如何从 meteor 访问 mysql 数据库

sql - MySQL 错误代码 : 1005

sql - 当结果集很大时,RODBC 会丢失日期时间的时间值

mysql - 在mySQL中查找每个组中的成员总数