【发布时间】:2020-08-30 03:37:11
【问题描述】:
我在 PostgreSQL JSON 列中存储了以下 JSON 文档:
{
"status": "Success",
"message": "",
"data": {
"serverIp": "XXXX",
"ruleId": 32321,
"results": [
{
"versionId": 555555,
"PriceID": "8abf35ec-3e0e-466b-a4e5-2af568e90eec",
"price": 350,
"Convert": 0.8,
"Cost": 15
"Customer_ID":1
},
{
"versionId": 4444,
"PriceID": "b5a1dbd5-17b4-4847-8b3c-da334f95276a",
"price": 550,
"Convert": 0.7,
"Cost": 10,
"Customer_ID":10
}
]
}
}
我正在尝试检索特定 customer_ID 的价格 我正在使用此查询来获取 Customer_ID=1 的价格
select json_array_elements(t.info -> 'data' -> 'results') ->> 'price'
from mytable t
where exists (
select
from json_array_elements(t.info -> 'data' -> 'results') x(elt)
where (x.elt ->> 'Customer_ID')::int = 1
)
问题是对于 Customer_ID=1 和 Customer_ID=10 我得到相同的结果 我基本上得到了数组的两个元素,而不仅仅是一个。 我不知道我做错了什么
【问题讨论】:
标签: sql arrays json postgresql select