我有一个表test
列,其中包含整数数组和值,例如{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
是否可以选择这些列并打印字符串?
像这样:
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
将结果转换为所需的格式:
SELECT name, STRING_AGG(description, ', ')
FROM test
JOIN ekwdesc ON ekwdesc.value = ANY(test.ekw)
GROUP BY name
有关可执行示例,请参阅随附的 SQLFiddle。