這是表結構MySQL的「其中」產生正確的結果,但「WHERE NOT IN」不
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
行,只有少數例外。我試圖忽略那些不爲空的記錄。以下查詢不起作用:
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
這裏發生了什麼?
看到一些數據將是有用的 – 2013-11-03 01:50:39
三值邏輯的另一個受害者。檢查出http://stackoverflow.com/questions/129077/not-in-constraint-and-null-values的相反。 –