MySQL在创建时出现奇怪的错误。。。选择:错误1062(23000):重复输入';0';对于键1

MySQL在创建时出现奇怪的错误。。。选择:错误1062(23000):重复输入';0';对于键1,mysql,mysql-error-1062,Mysql,Mysql Error 1062,这就是有问题的查询(其预期含义是:将与实体530配对的所有实体拉到一个新表中,并计算成对的数量): 我解释错误消息: ERROR 1062 (23000): Duplicate entry '0' for key 1 作为投诉,我违反了主键的唯一性。但是,我是按该值分组的,这应该确保唯一性,对吗?然后我想试试这个: CREATE TEMPORARY TABLE paired ( entity_id INTEGER PRIMARY KEY, numrels INTEGER ) ; INS

这就是有问题的查询(其预期含义是:将与实体530配对的所有实体拉到一个新表中,并计算成对的数量):

我解释错误消息:

ERROR 1062 (23000): Duplicate entry '0' for key 1
作为投诉,我违反了主键的唯一性。但是,我是按该值分组的,这应该确保唯一性,对吗?然后我想试试这个:

CREATE TEMPORARY TABLE paired (
  entity_id INTEGER PRIMARY KEY,
  numrels INTEGER
)
;
INSERT INTO paired
SELECT I.entity2_id, COUNT(I.relation_id) AS numrels
FROM pairs I
WHERE I.entity1_id = 530 AND I.entity2_id IS NOT NULL
GROUP BY I.entity2_id
;
令人惊讶的是,这项工作没有任何问题,尽管根据我的理解,两者应该是等价的

什么给了我

供参考:

mysql  Ver 14.12 Distrib 5.0.82sp1, for redhat-linux-gnu (x86_64) using readline 5.1

你的陈述不对等<代码>创建。。。选择创建您在语句的
创建
部分中提到的列(即实体id和numrels),此外,还为语句的
选择
部分的每一列创建列。新表中有四列。
SELECT
的结果插入最后两列。其他列将用它们的默认值填充,这将导致违反主键的唯一性


另请参见

谢谢!不完全正确,但正确的程度足以让我明白发生了什么。更准确地说:我有另一个类似的查询,这个查询是有效的。原因是,之前的查询在
SELECT
CREATE
中都有
entity\u id
;在这个例子中,我有
entity2\u id
。如果列名相同,则它们会合并。因此,我在其中有两列,但在这一列中有三列(
entity\u id
numrels
entity2\u id
):你敢说你得到的id值是唯一的吗?你能发布一些示例数据吗?
mysql  Ver 14.12 Distrib 5.0.82sp1, for redhat-linux-gnu (x86_64) using readline 5.1