我正在寻找一个给定JSON列中值的不同列表的查询表。
在下面的代码片段中,Survey_Results表具有3列: 名称,电子邮件和有效载荷。有效负载是我要查询的JSON对象。
Table Name: Survey_Results
Name Email Payload
Ying SmartStuff@gmail.com [
{"fieldName":"Product Name", "Value":"Calculator"},
{"fieldName":"Product Price", "Value":"$54.99"}
]
Kendrick MrTexas@gmail.com [
{"fieldName":"Food Name", "Value":"Texas Toast"},
{"fieldName":"Food Taste", "Value":"Delicious"}
]
Andy WhereTheBass@gmail.com [
{"fieldName":"Band Name", "Value":"MetalHeads"}
{"fieldName":"Valid Member", "Value":"TRUE"}
]
我正在寻找提及的所有fieldName的唯一列表。
理想的答案是查询,并给我一个包含“产品名称”,“产品价格”,“食品名称”,“食品口味”,“乐队名称”和“有效成员”的列表。
在Postgres中是否可能出现这种情况?
答案 0 :(得分:0)
在后来的联接中使用jsonb_array_elements()
:
select distinct value->>'fieldName' as field_name
from survey_results
cross join json_array_elements(payload)
field_name
---------------
Product Name
Valid Member
Food Taste
Product Price
Food Name
Band Name
(6 rows)