在 postgresql 中增加列值

Posted

技术标签:

【中文标题】在 postgresql 中增加列值【英文标题】:Increment column value in postgresql 【发布时间】:2020-04-02 20:35:16 【问题描述】:

test_id 的数据类型是 int(4) 我正在尝试将 test_id 的值增加 1。

下面是表格

test_id   name   location

 245      Frank    CA
 245      Roy      MO
 245      Tom      KS
 245      Chris    KS
 245      Harry    MO

预期输出

  test_id   name   location

   245      Frank    CA
   246      Roy      MO
   247      Tom      KS
   248      Chris    KS
   249      Harry    MO

【问题讨论】:

请告诉我们您究竟是如何“尝试”的。 不可能,因为顺序是随机的 【参考方案1】:

假设其他值唯一地定义每一行,您可以使用row_number()join

update t
    set test_id = test_id + seqnum
    from (select t.*, row_number() over () - 1 as seqnum
          from t
         ) tt
    where tt.name = t.name and tt.location = t.location;

您可能需要row_number()order by 以获取具有特定顺序的结果。

【讨论】:

以上是关于在 postgresql 中增加列值的主要内容,如果未能解决你的问题,请参考以下文章

选择性过滤列值不为空的行 PostgreSQL

Postgres数据库之增加dm默认表空间main学习汇总

Postgres数据库之增加dm默认表空间main学习汇总

Postgres数据库之增加dm默认表空间main学习汇总

重置前根据增加的列值选择最后一行?

在 PostgreSQL timestamptz 类型中保留时区