【问题标题】:Postgresql alter table -> add column + valuesPostgresql 更改表 -> 添加列 + 值
【发布时间】:2016-11-23 09:40:17
【问题描述】:

我需要更改数据库中的一个表。我想要的是添加一个类型为integer[] 的列,并直接从另一个查询中向该列添加值,结果是 4 个 ID 号。

我目前得到的:

ALTER TABLE resourcen add rs_insurance integer[] 
update resourcen set rs_insurance = (select li_id from li_versicherungsart) 

第二条命令返回以下错误:

ERROR: column "rs_insurance" is of type integer[] but expression is of type integer
SQL state: 42804
Hint: You will need to rewrite or cast the expression.
Character: 37

如何将找到的所有 ID 转换为 int[] 数组?

【问题讨论】:

  • select array_agg(li_id) ... 但您绝对需要某种相关的子查询。但是如果没有关于这两个表的更详细信息以及它们之间的关系,就很难判断
  • 这成功了!将其发布为答案,以便我接受!
  • 是的,这正是我想要的。但是 li_versicherungsart 在不同的安装上是不同的。
  • 因为用户稍后可能会更改这些值。

标签: postgresql alter


【解决方案1】:

可以使用postgres数组聚合函数:

update resourcen set rs_insurance = (select array_agg(li_id) from li_versicherungsart) 

参考:https://www.postgresql.org/docs/current/static/functions-aggregate.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多