如何解决如何使用字段Postgres更新表
我有这样的表:
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 举报,一经查实,本站将立刻删除。