首页 > 解决方案 > 如何从 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中使用 -> 和 ->> 运算符无济于事,但可能是我没有正确使用它们

标签: sqljsonpostgresql

解决方案


您应该使用json_array_elements提取所有 json 数组元素。例子:

SELECT
  id, country, json_array_elements(inventory->'selectedProducts')
FROM 
  products

尝试:db<>file

之后,您将得到产品,可以使用 -> 或 ->> 运算符按名称提取单个属性,或使用 json_each 提取所有键值对。


推荐阅读