我使用的是MySQL 5.1.60非空自動遞增列 - 但「爲空」查詢返回剛剛插入的行
,我有所謂的「文件夾」一表
CREATE TABLE `folder` (
`folder_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`parent_id` int(10) unsigned DEFAULT NULL,
`update_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`folder_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
而且我爲它插入一個值。
INSERT INTO `folder` (`name`) VALUES ('test_name');
剛過,我執行選擇查詢
查詢
SELECT * FROM folder f WHERE f.folder_id IS NULL
但令人驚訝的是,它實際上返回最後插入的行(僅在第一次運行)。
爲什麼這種行爲在MySQL中發生。
Yip即使在不同版本的MySQL上,我也會得到相同的結果。確實很奇怪.... – Namphibian
[沒有repro here](http://sqlfiddle.com/#!8/2bde9/3) – hims056
我不這麼認爲。 folder_id被定義爲非空和auto_increment。使用上述查詢不應該返回任何行。請參閱http://sqlfiddle.com/#!2/9a44f/1 –