回答

收藏

PostgresQL SQL:将结果转换为数组

技术问答 技术问答 392 人阅读 | 0 人回复 | 2023-09-14

下面的查询:) E8 |) Z1 G# K4 f
    SELECT  i_adgroup_id, i_category_id5 H, `9 z+ D4 o, J/ j
    FROM adgroupcategories_br  q4 W1 H9 n' U. g
    WHERE i_adgroup_id IN; K9 N* T4 z. b' V. U3 c
    (
6 Y4 R: P- k* N2 \+ w& t        SELECT i_adgroup_id
( {: H/ n: k/ z3 j( f* z        FROM adgroupusers_br; x  v! s! h& j1 R, ]# H# |4 v7 M
        WHERE i_user_id = 103713  l$ k5 p/ _/ _) {
    )
/ k6 a9 x: _" t; |3 L! _4 Y    GROUP BY i_adgroup_id, i_category_id;3 F- ^! B8 _9 b2 Z, F+ T) y( A
给我这样的结果:
) G1 F' _- f# m$ q. f    i_adgroup_id integer | i_category_id smallint
2 s  o; l2 B) t3 V    ---------------------|-----------------------
4 r7 o5 x! w7 e6 K/ _  K; ~    15938                | 2
9 V: e* ]! a0 J. T0 D; R* V! W: k8 [    15938                | 3" d( i0 k+ l) m! a5 L# }5 A
    15938                | 46 l, z6 g4 f& d4 h5 G
    15942                | 1
; p- Z4 U2 n# l2 d    15942                | 2
+ A( {% E; e5 g! @9 Q9 `$ X我想要的是这样的结果:# o$ ~% E% u1 U" s' W( B, C, W
    i_adgroup_id integer | i_category_id smallint[]4 X  {0 i$ w# I
    ---------------------|-----------------------
2 h$ o* T% \$ b% `9 T) `- w4 J8 ^    15938                | { 2, 3, 4 }
' q" g) w' V" D/ h2 o' ?. f& w! V    15942                | { 1, 2 }
' P) ]: T( ?& O! \4 Y' y如何更改原始SQL查询以得到上面的结果?
8 G. n- r! d; ~1 B7 C5 w                ' L  l, M% G7 _; ~0 u: _6 e
解决方案:
( u6 f; R; @  |9 E) d  m                6 u! c! |0 b1 L% W

9 K1 A6 ^8 `, _1 x) a3 S. y
: \7 \# _# E' x5 C  M4 V2 @                您要使用array_agg,这应该可以工作:/ d- F/ G8 ?/ a# s( @8 K
SELECT i_adgroup_id, array_agg(i_category_id)
0 ?# T( T4 r& R2 GFROM adgroupcategories_br1 f! ^- g  p: Z2 z* y. k
WHERE i_adgroup_id IN5 p6 B( s; C4 w2 G# T; V& ]8 b
(
4 I) P( n; L/ I5 {# k    SELECT i_adgroup_id* z, I1 t& m6 }) X7 }1 T
    FROM adgroupusers_br
* G8 `6 K! V' {/ o: o% D- W% ^    WHERE i_user_id = 103713
9 K: u8 b/ B- \8 P)$ d- ]& _' g4 z
GROUP BY i_adgroup_id;% i; O& s* O- t/ Q
请注意,i_category_id不再存在,GROUP BY因为它正在聚合。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则