【发布时间】:2019-04-19 01:56:48
【问题描述】:
我正在尝试基于 JSON 主体创建一个查询,该主体包含一个浮点数组中的属性。这个 JSON 对象数组可以包含多个索引,但我无法获得最大的属性和相关的。如何根据“日期”字段提取正确的数组索引?
我尝试过执行按 DESC 顺序排序并限制为 1 的 CROSS JOIN LATERAL 语句,但该数据库有多个需要查询的行。 JSON 结构:
{
"identification":"123a",
"array": [
{
"type":"created",
"num": 123.45
},
{
"type":"delete",
"num": 123.46
}
]
}
到目前为止,我的查询如下所示:
SELECT col -> 'identification' AS Identify FROM tbl t
CROSS JOIN LATERAL jsonb_array_elements(t.col -> 'array') jae (array)
ORDER BY jae.array -> 'num' DESC
我希望结果全部以 JSON 格式返回,包括“标识”属性。数组中“num”属性的最大数字,以及该对象中的其他属性,应与标识一起返回。它有点工作,但我看到查询返回数组的所有对象。查询结果应该是这样的
{
"Identify":"123a"
"array":{
"type":"delete",
"num": 123.46
}
}
结果应省略“created”对象类型,仅返回基于“num”属性的最大大小的属性。
【问题讨论】:
标签: sql arrays json postgresql