PostgreSQL整数数组值使用desc字符串连接到其他表中的整数

mat*_*ein 8 sql arrays postgresql select postgresql-9.1

我有一个表test为int数组和类似值列{1000,4000,6000}{1000}{1000,4000}ekw.这些值与另一个表中的描述字符串匹配

tab: test
id | name   | ekw
-----------------
 1 |  One   | {1000}
 2 |  Two   | {1000,4000}
 3 |  Three | {1000,4000,6000}

tab: ekwdesc
id | value  | desc
-----------------
 1 |  1000  | Max
 2 |  2000  | Tim
 3 |  3000  | Rita
 5 |  4000  | Sven
 6 |  5000  | Tom
 7 |  6000  | Bob
Run Code Online (Sandbox Code Playgroud)

是否可以选择这些列并打印字符串?

就像是:

select name, ekw from test, ekwdesc
Run Code Online (Sandbox Code Playgroud)

我想看到这个结果:

id | name   | ekwdesc
-----------------
 1 |  One   | Max
 2 |  Two   | Max, Sven
 3 |  Three | Max, Sven, Bob
Run Code Online (Sandbox Code Playgroud)

我试过IN和ANY但是无法让它工作.

Mur*_*nik 13

您有正确的想法使用any运算符进行连接.连接完成后,剩下的就是用来string_agg将结果转换为您想要的格式:

SELECT   name, STRING_AGG(description, ', ')
FROM     test
JOIN     ekwdesc ON ekwdesc.value = ANY(test.ekw)
GROUP BY name
Run Code Online (Sandbox Code Playgroud)

有关可执行示例,请参见附带的SQLFiddle.