我有SELECT
这样的查询:
SELECT id_default_value, id_type FROM ntg_attribute, ntg_module_attribute
WHERE ntg_attribute.id_module_attribute = ntg_module_attribute.id;
这会返回2列,id_default_value
和id_type
。然后,我想使用此数据作为INSERT
查询另一个表格ntg_default_value
的基础,使用id_default_value
作为关键字,id_type
作为插入值
以下几乎就在那里,但并不完全:
INSERT INTO ntg_default_value (id, id_type)
SELECT id_default_value, id_type FROM ntg_attribute, ntg_module_attribute
WHERE ntg_attribute.id_module_attribute = ntg_module_attribute.id;
这给了我:
ERROR: duplicate key value violates unique constraint "pk_ntg_default_value"
我正在尝试做的事实可能吗?如果是,我该如何构建查询?
(PostgreSQL 8.4.6)
答案 0 :(得分:1)
约束'pk_ntg_default_value'的名称可能意味着您违反了表ntg_default_value的主键约束。
根据您的要求,您可以取消主键约束。或者你可以扩展它以包括id和amp; id_type如果还没有,请在查询中添加GROUP BY,以防止重复的id_devault_value& id_type对。您的查询将成为:
INSERT INTO ntg_default_value (id, id_type)
SELECT id_default_value, id_type
FROM ntg_attribute, ntg_module_attribute
WHERE ntg_attribute.id_module_attribute =
ntg_module_attribute.id
GROUP BY id_default_value, id_type