JSONB 排序聚合
JSONB sort aggregation
由于这个答案,我发现这个查询适合我的需要,以便对 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;
如我们所见,这适用于不太符合我需要的硬编码数据。我似乎无法弄清楚如何用 table.
中的 jsonb 列替换 JSON 数据
我的以下尝试产生了 'data is not defined'
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,可帮助描述 table 以及结构的定义方式:http://sqlfiddle.com/#!17/41102/92
你快到了。你只需要引入原始的 table,像这样:
SELECT jsonb_agg(elem)
FROM (
SELECT elem
FROM file_metadata, jsonb_array_elements(data) a(elem)
ORDER BY (elem->>'email')
) sub;
由于这个答案
(假的,生成的随机数据)
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;
如我们所见,这适用于不太符合我需要的硬编码数据。我似乎无法弄清楚如何用 table.
中的 jsonb 列替换 JSON 数据我的以下尝试产生了 'data is not defined'
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,可帮助描述 table 以及结构的定义方式:http://sqlfiddle.com/#!17/41102/92
你快到了。你只需要引入原始的 table,像这样:
SELECT jsonb_agg(elem)
FROM (
SELECT elem
FROM file_metadata, jsonb_array_elements(data) a(elem)
ORDER BY (elem->>'email')
) sub;