理想情况下,我想运行一个返回表的查询,其中每一行都是指定表的列名,并且表中所有不同值的jsonb
数组对应于该列
棘手的部分似乎是动态地这样做,我只能指定表而不是每个单独的列。
我可以从information_schema.columns
检索相关表格的所有列名称,但有一种简单的方法可以将其与查询结合起来,以检索每列的所有不同值吗?
答案 0 :(得分:2)
create table example(id int primary key, str text, val numeric);
insert into example values
(1, 'a', 1),
(2, 'a', 2),
(3, 'b', 2);
select key, array_agg(distinct value)
from example, jsonb_each_text(to_jsonb(example))
group by key;
key | array_agg
-----+-----------
id | {1,2,3}
str | {a,b}
val | {1,2}
(3 rows)
或
select key, json_agg(distinct value)
from example, jsonb_each(to_jsonb(example))
group by key;
key | json_agg
-----+------------
id | [1, 2, 3]
str | ["a", "b"]
val | [1, 2]
(3 rows)
答案 1 :(得分:0)
不确定我完全理解你,但这似乎做你想要的:
No Match.. Checking Lower...
No Lower.. Checking Higher...
Found higher for: 8 in [2, 3, 5] at index: 2