想象一下这个简单的postgresql表('json_table'):
id | data(json)
1 | {"a": 1}
2 | {"a": 1, "b": 2}
3 | {"a": 2}
我知道可以查询所有包含密钥'a'的记录:SELECT * FROM json_table WHERE data ? 'a';
但是我想查询包含json值'2'的所有记录。所以结果应该是这样的:
2 | {"a": 1, "b": 2}
3 | {"a": 2}
这可以通过上面提到的“简单”查询来实现吗?
答案 0 :(得分:1)
我认为在这样一个简单的查询中你可以使用一个运算符。 您可以通过下面的查询来实现这一点,但我不知道这是否是最简单的方法:
select distinct on (id) id, data from (
select id, data, (json_each(data)).value::text
from json_table
) alias
where value = '2'