我有一个 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/