如何获取Postgresql数组的每个元素的相应名称

时间:2015-12-15 20:28:40

标签: database postgresql

我有两张表tablea和tableb。他们的结构是:

tablea
  id   serial
  name varchar
  alg  integer[]

tableb
  id          serial
  description varchar
tablea.alg字段中的

我有多个像{1,17,55,97}这样的物质,在查询中我想获取名称而不是数字:

name      | substances
organism1 | substance 1, substance 17, substance 55, substance 97

any1可以提出正确的查询吗?

关于simmilar问题的答案在StackOwerflow question,但如何使用表而不是固定数组值?

谢谢...

1 个答案:

答案 0 :(得分:0)

使用unnest()在单独的行中获取algs, 加入值tableb并使用description汇总string_agg()

select name, string_agg(description, ', ') substances
from (
    select name, unnest(alg) alg
    from tablea
    ) a
join tableb on alg = id
group by name;