如何基于PostgreSQL内部JSON元素值过滤查询结果?
解决方案
你可以在现有查询基础上,通过json_each返回的value字段访问include属性,添加过滤条件筛选符合要求的记录:
最终查询语句
SELECT t.id, je AS tables FROM myTable t, json_each(t.values::json#>'{something, insideSomething, tables}') je WHERE (je.value->>'include')::boolean = true;
说明
json_each会将tables下的每个键值对拆分为单独行,返回的行包含key(表名,如tableA)和value(对应包含include属性的JSON对象)两个字段- 通过
je.value->>'include'提取include的字符串值,转为布尔类型后判断是否等于true,从而过滤出符合条件的表 - 如果你的
values字段本身就是json类型,可以去掉::json转换,直接使用t.values#>'{something, insideSomething, tables}'
执行该查询后,就能得到目标结果:仅保留include为true的表记录,输出对应的id和表信息。
内容的提问来源于stack exchange,提问作者user17331277
相关产品推荐
相关产品推荐

