我可以使用两个连接表中的数据编写插入查询吗?
我有一个像这样的 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
。然后,我想使用此数据作为对另一个表 ntg_default_value
进行 INSERT
查询的基础,使用 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)
I have a SELECT
query like this:
SELECT id_default_value, id_type FROM ntg_attribute, ntg_module_attribute
WHERE ntg_attribute.id_module_attribute = ntg_module_attribute.id;
This returns 2 columns, id_default_value
and id_type
. I'd like to then use this data as the basis of an INSERT
query into another table, ntg_default_value
, using id_default_value
as the key, and id_type
as the inserted value.
The following is nearly there, but not quite:
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;
This gives me:
ERROR: duplicate key value violates unique constraint "pk_ntg_default_value"
Is what I'm trying to do actually possible? If so, how do I construct the query?
(PostgreSQL 8.4.6)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
约束“pk_ntg_default_value”的名称可能意味着您违反了表 ntg_default_value 的主键约束。
根据您的要求,您可以取消主键约束。或者您可以将其扩展为包含 id 和id_type(如果还没有),并在必要时将 GROUP BY 添加到查询中,以防止重复的 id_devault_value & id_type 对。那么你的查询就变成:
The name of the constraint 'pk_ntg_default_value' probably means you are violating the primary key constraint of the table ntg_default_value.
Depending on your requirements you can either take away the primary key constraint. Or you can expand it to include both id & id_type if it doesn't already and add a GROUP BY to your query, if necessary, to prevent duplicate id_devault_value & id_type pairs. Your query becomes then :