我想表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