簡體   English   中英

在復合類型數組中,如何為數組中的所有條目選擇復合類型的第一個元素?

[英]In an composite type array, how should I select first element of composite type for all entries in array?

我有一個復合類型:

create type p as (a int, b int);

然后我創建了一個表:

create table f(pv p[]);

用它填寫值:

insert into f values(array[(10,20),(30,40)]::p[]);
insert into f values(array[(1,20)]::p[]);

現在,我想要的是一個“ select”語句,該語句為數組中的每個條目顯示元素“ a”,預期可能是這樣的:

|pv     |
|{10,30}|
|{1}    |

我已經厭倦了很多語句組合,但是沒有提供答案。

有人可以幫忙嗎?

謝謝!

您應該考慮在表中添加一個id列,以便在取消unnest之后可以對該id進行分組。

SELECT array_agg(a)
FROM f
    ,unnest(pv)
GROUP BY id;

否則,您可以按整個數組分組

SELECT array_agg(a)
FROM f
    ,unnest(pv)
GROUP BY pv;

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM