【发布时间】:2017-05-09 08:20:04
【问题描述】:
我有查询在 jsonb 列中搜索 id,该数组可以包含许多 id。
假设我有这样的数据
id | act | act_id | from_ids | object_ids | post_date
2 post 1 {"2":"1494308197","3":"1494308198","4":"1494308199"} {"items":["104564"]} 1494308197
还有这样的查询
SELECT an.*
FROM activity_network an
WHERE an.from_ids ?| ARRAY['2','3'];
该查询将返回该行,因为它找到了 2 和 3。但是我怎样才能返回它在它自己的列中找到的内容。这样它在结果中也会以文本或 json 格式或类似的格式返回 2,3。
我试过了
SELECT an.*, jsonb_each_text(from_ids) b
FROM activity_network an
WHERE an.from_ids ?| ARRAY['2','3'];
但这会创建 3 行,其中 b 列的值分别为 2、3 和 4。我想要 1 行的 b 列同时包含 2 和 3,这是我搜索的内容。
这可能吗?
我正在寻找的示例结果。注意最后一列。我把它作为分隔的列用于演示目的。它可以是我可以使用的任何格式。
2 | post | 1 | {"2":"1494308197","3":"1494308198","4":"1494308199} | {"items":["104564"]} | 1494308197 | 2,3}
【问题讨论】:
-
您只想向您显示带有键 2 和 3 的 json,省略键 4 - 对吧?..
-
是的,例如,我有一个要搜索的 id 数组,这种情况是 2 和 3,jsonb 字段还包含 4 的键。但我只想知道查询的 id找到本例中为 2 和 3 的记录。
-
@VaoTsun 我添加了一个示例预期结果。
标签: json postgresql jsonb