微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用字段Postgres更新表

如何解决如何使用字段Postgres更新表

我有这样的表:

enter image description here

Incident_id是外键。我想要实现的目标->再创建一个具有命名位置(int)的列。并按如下方式填充它:查找每个identity_id的所有行,并用我通过每个identity_id获得的行的索引或行列表更新每一行。例如: event_id 5与4条注释行匹配,因此位置的更新将相应地为0、1、2、3。 Ty

解决方法

我不建议存储这样的派生信息。相反,您可以创建一个使用row_number()来枚举每个incident_id的行的视图:

create view myview as
select t.*,row_number() over(partition by incident_id order by id) - 1 rn
from mytable t

要获得稳定的结果,您需要一个可用于一致地排列每个事件行的列:我在查询中将其称为id。您可以将其更改为您的用例的相关列名(或列集)。您通常会使用表的主键列。


编辑

如果您真的想在新列中实现该值,并考虑到表的主键,则可以执行以下操作:

alter table mytable add column position int;

update mytable t
set position = t1.position
from (
    select incident_note_id,row_number() over(partition by incident_id order by incident_note_id) - 1 position
    from mytable
) t1
where t1.incident_note_id = t.incident_note_id;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。