作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是表结构
CREATE TABLE `student_classlists` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`SessionCode` int(5) DEFAULT NULL,
`CourseCode` varchar(10) DEFAULT NULL,
`SectionCode` varchar(1) DEFAULT NULL,
`LastName` varchar(255) DEFAULT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`StudentId` int(10) unsigned DEFAULT NULL,
`FinalGradeSIS` int(10) DEFAULT NULL,
`Status` varchar(10) DEFAULT NULL,
`Faculty` varchar(255) DEFAULT '',
`Email` varchar(255) DEFAULT NULL,
`ClassListDate` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=576 DEFAULT CHARSET=utf8;
Status
列主要由 NULL
行组成,只有少数异常(exception)。我试图忽略那些不为空的记录。以下查询不起作用:
SELECT StudentId FROM student_classlists WHERE `Status` NOT IN ('Drop') GROUP BY StudentId
出于某种原因,它会产生意想不到的空结果。但是一个非常相似的查询,唯一的异常(exception)是删除了 NOT
产生了预期的结果
SELECT StudentId FROM student_classlists WHERE `Status` IN ('Drop') GROUP BY StudentId
这里发生了什么?
最佳答案
具有 NULL
状态的行不会出现在输出中,因为它们既不在 IN
列表之内也不在 IN
列表之外。要获取这些行,请添加 COALESCE
,如下所示:
SELECT StudentId
FROM student_classlists
WHERE COALESCE(`Status` NOT IN ('Drop'), 1)
GROUP BY StudentId
这实际上表明必须包含 Status
列中具有 NULL
值的记录。
关于MySQL “WHERE IN” 产生正确的结果但 “WHERE NOT IN” 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749020/
我是一名优秀的程序员,十分优秀!