回答

收藏

在分组/聚合过程中串联/合并数组值

技术问答 技术问答 69 人阅读 | 0 人回复 | 2023-09-13

我有一个表的数组列类型:: p. b, q% H. P" m/ a
title       tags( T) E4 A7 o* p4 R
"ridealong";"{comedy,other}"
9 h2 a& `- t& e3 ?' j1 o6 U"ridealong";"{comedy,tragedy}"
2 `# E/ A3 D  ~0 l& E"freddyjason";"{horror,silliness}"
& _5 f: [4 f, `7 h6 s8 b1 b我想写一个查询,每个标题生成一个数组(理想情况下,它将是一个设置/去重复的数组)! z) k& K+ @. {' m+ @' F6 g" K5 Z
例如, l6 L. E. L5 L# H: n5 G& ?0 j
select array_cat(tags),title from my_test group by title8 D" h, y" O" k
上面的查询当然行不通,但是我想产生2行:& K. m* U$ m" S1 D4 M
"ridealong";"{comedy,other,tragedy}"
+ ^% m8 T" }/ |"freddyjason";"{horror,silliness}"2 z% G7 M' g0 g1 [7 k+ i6 N8 s7 c- \
任何帮助或指针将不胜感激(我使用的是Postgres 9.1)
2 i2 _. C5 p) @5 _$ B) N
! h4 T- f/ S5 Q% D. _基于Craig的帮助,我得出以下结论(语法略有更改,因为9.1完全按照他的显示抱怨该查询); H' \0 F- ]9 B0 |3 k
SELECT t1.title, array_agg(DISTINCT tag.tag)
6 I3 B% k! |6 L" n3 h) @# a! d) WFROM my_test t1, (select unnest(tags) as tag,title from my_test) as tag $ A& o  ?$ i5 d8 y
where tag.title=t1.title  R! G+ s" V, R& w. K
GROUP BY t1.title;6 c% X3 q9 h! T6 y- D; }
                ) X  ?3 B  F; G9 ]+ A! }  P
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则