sql - 如何从 PostgreSQL 中的单个 JSON 列中获取多个值?
问题描述
在我的数据库中,我目前有一个像这样的表:
order_id | 国家 | 数据 |
---|---|---|
1 | 德国 | {"selectedProducts": [{"product": {"size": 2.5, "id": 72}, "quantity": 1},{"product": {"size": 3, "id": 25} , "数量": 1}]} |
2 | 德国 | {"selectedProducts": [{"product": {"size": 4, "id": 72}, "quantity": 1},{"product": {"size": 3, "id": 36} , "数量": 1}]} |
3 | 意大利 | {"selectedProducts": [{"product": {"size": 2.5, "id": 72}, "quantity": 1}]} |
而且我一直在尝试提出一个 SELECT sql 查询,它可以让我获取产品的id以便能够按国家/地区等研究其受欢迎程度,但我这样做完全没有成功。
数据列也可以包含不确定数量的产品。愿意帮忙吗?我已经尝试在PostgreSQL中使用 -> 和 ->> 运算符无济于事,但可能是我没有正确使用它们
解决方案
您应该使用json_array_elements提取所有 json 数组元素。例子:
SELECT
id, country, json_array_elements(inventory->'selectedProducts')
FROM
products
尝试:db<>file
之后,您将得到产品,可以使用 -> 或 ->> 运算符按名称提取单个属性,或使用 json_each 提取所有键值对。