これがテーブル構造です
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
行で構成されています。null ではないレコードを無視しようとしています。次のクエリは機能しません。
SELECT StudentId FROM student_classlists WHERE `Status` NOT IN ('Drop') GROUP BY StudentId
何らかの理由で、予期しない空の結果が生成されます。ただし、非常によく似たクエリを使用すると、 を削除するという唯一の例外がありNOT
、期待される結果が得られます。
SELECT StudentId FROM student_classlists WHERE `Status` IN ('Drop') GROUP BY StudentId
ここで何が起こっているのですか?