我想表requests
的一個字段的不同值插入表中的唯一領域pastmonth
爲什麼在將DISTINCT值插入表時將出現「重複輸入」錯誤?
CREATE TABLE `pastmonth` (
`video_id` char(5) DEFAULT NULL,
PRIMARY KEY (`video_id`)
);
INSERT INTO pastmonth (video_id)
SELECT DISTINCT (video_id)
FROM requests
WHERE exec_datetime >= NOW() - 60*24*60*60;
但是我得到這個錯誤
Error Code: 1062. Duplicate entry 'abcde' for key 'PRIMARY'
我不相信在表requests
中存在abcde
的值的重複條目,因爲以下查詢指示只有1個條目具有該條目,但如果因爲我正在選擇DISTINCT值而不應該出現問題。
SELECT COUNT(*) FROM requests WHERE video_id = 'abcde';
COUNT(*)
1
我有一個requests.video_id
非唯一索引,但我認爲這是不相關的我有問題。我可能有一個腐敗的樹樹索引嗎?
`video_id` char(5) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
但在新表中,它被定義爲:
`video_id` char(5)
編輯
CREATE TABLE `requests` (
`request_id` bigint(20) NOT NULL AUTO_INCREMENT,
`video_id` char(5) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`exec_datetime` datetime DEFAULT NULL,
PRIMARY KEY (`request_id`),
KEY `exec_datetime` (`exec_datetime`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
過去一個月空了嗎?你顯示創建表,但我不能告訴它是否在同一個執行中完成。 – 2013-03-21 03:33:52
該表爲空,但已創建。我按順序依次執行這些命令。 – user784637 2013-03-21 03:34:37
是的,你確定表PastMonth是空的嗎?或者在過去一個月內您選擇的不同和現有數據之間沒有重複? – ljh 2013-03-21 03:35:49