我有一张桌子test
包含 int 数组和值的列,例如{1000,4000,6000}
or {1000}
or {1000,4000}
called 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
是否可以选择这些列并打印字符串?
就像是:
select name, ekw from test, ekwdesc
我想看到这个结果:
id | name | ekwdesc
-----------------
1 | One | Max
2 | Two | Max, Sven
3 | Three | Max, Sven, Bob
我尝试使用 IN 和 ANY 但无法使其工作。
你有正确的想法来使用any
连接的运算符。连接完成后,剩下的就是使用string_agg http://www.postgresql.org/docs/9.1/static/functions-aggregate.html将结果转换为您想要的格式:
SELECT name, STRING_AGG(description, ', ')
FROM test
JOIN ekwdesc ON ekwdesc.value = ANY(test.ekw)
GROUP BY name
见附件SQLFiddle http://sqlfiddle.com/#!15/113d1/1一个可执行的例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)