我想插入一个新行,从原始行复制两个字段,并将最后一个字段更改为新值。这一切都在一张 table 上完成。
请原谅表格名称/字段,它们很长。
表 1 - alert_template_allocations
- alert_template_allocation_id - pkey(忽略)
- alert_template_allocation_io_id -(副本)
- alert_template_allocation_alert_template_id -(副本)
- alert_template_allocation_user_group_id -(更改为静态值)
表2-io
- io_id - 复制属于站 222 的 io_id
- io_station_id - 只想复制站 id = 222 的行
我的尝试
insert into alert_template_allocations
(alert_template_allocation_io_id,
alert_template_allocation_alert_template_id,
alert_template_allocation_user_group_id)
values
(
(Select at.alert_template_allocation_io_id,
at.alert_template_allocation_alert_template_id
from alert_template_allocations at join io i on
i.io_id = at.alert_template_allocation_io_id
and i.io_station_id = 222)
, 4);
最佳答案
使用INSERT INTO SELECT
语法:
INSERT INTO alert_template_allocations (alert_template_allocation_io_id,
alert_template_allocation_alert_template_id,
alert_template_allocation_user_group_id)
SELECT at.alert_template_allocation_io_id,
at.alert_template_allocation_alert_template_id,
4
FROM alert_template_allocations at
JOIN io i
ON i.io_id = at.alert_template_allocation_io_id
AND i.io_station_id = 222;
关于postgresql - PostgresQL 将一行复制到同一个表并更改一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36695622/