我正在尝试将表的一个字段的不同值插入到表requests
的唯一字段中pastmonth
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'
我不相信表中的值有重复的条目,abcde
因为requests
以下查询表明只有 1 个条目,但是否存在无关紧要,因为无论如何我都在选择 DISTINCT 值。
SELECT COUNT(*) FROM requests WHERE video_id = 'abcde';
COUNT(*)
1
我有一个非唯一索引,requests.video_id
但我认为这与我遇到的问题无关。是否有可能我的 btree 索引已损坏?
编辑
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