回答

收藏

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

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

我有一个表的数组列类型:$ k9 l5 x- m' n5 ?4 ^# a' |
title       tags
% n9 b3 `$ w: F"ridealong";"{comedy,other}"
/ m2 \% c1 ^) I9 l# a"ridealong";"{comedy,tragedy}"; B4 X* V6 _8 @& T3 I( f
"freddyjason";"{horror,silliness}"4 G5 A/ c  J3 R# [6 Z* E# Y7 a
我想写一个查询,每个标题生成一个数组(理想情况下,它将是一个设置/去重复的数组)
5 F, M4 h" V5 {5 Z5 X- M例如
: d  h! q- w' C. s( kselect array_cat(tags),title from my_test group by title
) R! ^* p" K- `" h上面的查询当然行不通,但是我想产生2行:
' o2 _1 p& x* c! S$ e! ]! k"ridealong";"{comedy,other,tragedy}"
+ y: R  ^2 P& x3 p+ o0 T& F"freddyjason";"{horror,silliness}"- e2 r( a* y5 i
任何帮助或指针将不胜感激(我使用的是Postgres 9.1)+ a% b. _8 U' {. g* F5 X

, F! c, X. m: `  W/ h, X' C# O基于Craig的帮助,我得出以下结论(语法略有更改,因为9.1完全按照他的显示抱怨该查询)' ~, G- o7 g' A2 s6 Z
SELECT t1.title, array_agg(DISTINCT tag.tag)
4 v0 ~/ m/ `; l. zFROM my_test t1, (select unnest(tags) as tag,title from my_test) as tag * }- w* Z% M: X. E5 @& c/ q
where tag.title=t1.title
9 Y$ \# T  U( j1 N5 c, X% WGROUP BY t1.title;
$ E" C% x% E" c. |$ e! J- x               
% y' h/ w0 N6 c, @# ~2 C解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则