我有一个有两列的数据库。 第一个是类别ID,第二个是组ID。 两者都是主要的。 我需要在表中添加一个具有组ID 1和2的行的相同类别ID。 我的意思是所有类别都需要有1,2,3组
INSERT INTO `ps_category_group` (`id_category`, `id_group`)
SELECT `id_category`, 2 FROM (
SELECT DISTINCT `id_category`,`id_group` From `ps_category_group`) as x;
给了我
1062 - 重复录入' 2-2'对于关键' PRIMARY'
答案 0 :(得分:0)
您正在从同一个表中选择值以插入表中。然后你问为什么你会遇到主键违规?你当然是;这正是你的查询正在做的事情。
根据描述,您似乎想要:
INSERT INTO `ps_category_group` (`id_category`, `id_group`)
SELECT `id_category`, 2
FROM `ps_category_group`
ON DUPLICATE KEY UPDATE id_category = VALUES(id_category); -- This does nothing if the value already exists in the table