mysql - 正确使用 mysql 中的 WHERE NOT

标签 mysql sql

我有一个 users 表,里面有 6,169 个。其中一些用户在名为“status”的列中被标记为过期用户,其余用户的该列值为 NULL。我正在尝试为所有仍处于事件状态且值为“事件”的用户更新“状态”列,但是我无法准确选择要更新的组。

当我运行时

SELECT COUNT(id) FROM users;

它确认了 6,169 个用户数。

当我运行时

SELECT COUNT(id) FROM users WHERE status='expired'

它确认了 2,500 个过期用户。然而,当我运行时

SELECT COUNT(id) FROM users WHERE status !='expired'

我得到计数​​ 0。我尝试过类似的变体

SELECT COUNT(id) FROM users WHERE NOT status='expired'

并查看了许多其他 StackOverflow 问题,但无法弄清楚为什么我的语法不正确。任何帮助将不胜感激!

最佳答案

Status 可能是一个可为 null 的列,NULL != 'expired' 永远不会为真。

你可以试试这个:

SELECT COUNT(id) FROM users WHERE status IS NULL

它应该返回 3696。请参阅 fiddle here .

关于mysql - 正确使用 mysql 中的 WHERE NOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18090162/

相关文章:

mysql - 错误 1005 (HY000) : Can't create table db. 酒 (errno: 150)

mysql - 同一个表中的两列必须匹配 - Mysql

mysql - Rails 和 Heroku : How to add records to database?

MySQL 将时间转换为字符串 (Grafana)

MySQL:将区分大小写设置为默认值

sql - 具有非平凡表结构的免费公共(public)数据库?

mysql - 如何在 sequelize 中按聚合函数排序

sql - 作业失败。作业由用户<用户> 调用。运行的最后一步是 step1

php - 关于 MySQL/PHP 中事务(或表锁?)的问题

java - 类似 Hibernate 的多对多集合查询