我正在运行Postgres 9.3并且遇到一个涉及JSON列的查询问题,我似乎无法破解。
我们假设这是表格:
# CREATE TABLE aa (a int, b json);
# INSERT INTO aa VALUES (1, '{"f1":1,"f2":true}');
# INSERT INTO aa VALUES (2, '{"f1":2,"f2":false,"f3":"Hi I''m \"Dave\""}');
# INSERT INTO aa VALUES (3, '{"f1":3,"f2":true,"f3":"Hi I''m \"Popo\""}');
我现在想要创建一个查询,返回JSON列的根节点中正好有三个项/键的所有行(即第2行和第3行)。 JSON是否嵌套无所谓。
我尝试使用json_object_keys
和json_each
,但无法让它发挥作用。
答案 0 :(得分:3)
json_each(json)
应该做的工作。仅计算根元素:
SELECT aa.*
FROM aa, json_each(aa.b) elem
GROUP BY aa.a -- possible, because it's the PK!
HAVING count(*) = 3;