【发布时间】:2019-10-13 20:14:28
【问题描述】:
感谢here 的回答,我找到了适合我需要的查询,以便对 JSON 文档中的数据字段进行排序。
(假的,生成的随机数据)
SELECT jsonb_agg(elem)
FROM (
SELECT *
FROM jsonb_array_elements('[{
"id": "1",
"first_name": "Maximo",
"last_name": "Sambiedge",
"email": "msambiedge0@economist.com",
"gender": "Male",
"ip_address": "242.145.232.65"
}, {
"id": "2",
"first_name": "Maria",
"last_name": "Selland",
"email": "aselland1@sitemeter.com",
"gender": "Female",
"ip_address": "184.174.58.32"
}]') a(elem)
ORDER BY (elem->>'email') -- order by integer value of "ts"
) sub;
正如我们所见,这适用于不太符合我需要的硬编码数据。我似乎不知道如何用表中的 jsonb 列替换 JSON 数据。
我在下面的尝试产生“数据未定义”
SELECT jsonb_agg(elem), (SELECT data FROM file_metadata)
FROM (
SELECT *
FROM jsonb_array_elements(data) a(elem)
ORDER BY (elem->>'email')
) sub;
我怀疑FROM 子句中需要子查询?
这是我的问题的 SQLFiddle,用于帮助描述表以及如何定义结构:http://sqlfiddle.com/#!17/41102/92
【问题讨论】:
标签: sql arrays json postgresql jsonb