19

为简单起见,假设我有一个表,其中有一列只是一个 hstore。从 hstore 的所有行中获取所有键的唯一列表的最有效方法是什么?

例如。

my_hstore
------------
a=>1,b=>2
b=>2,c=>3
x=>10,y=>11
y=>11,z=12

检索包含 (a,b,c,x,y,z) 的列表/数组/集合的最有效方法是什么?

4

1 回答 1

34

总是有直接的skeys方法:

select distinct k
from (
    select skeys(my_hstore) as k
    from your_table
) as dt

如果你需要一个数组,那么添加一个array_agg

select array_agg(distinct k)
from (
    select skeys(my_hstore) as k
    from your_table
) as dt
于 2012-08-18T05:00:59.730 回答