我有一张表A,其中b列为jsonb
b
------------------
{"c": 1}
{"c": 1, "d": 2}
如何为缺少d的行构建查询?
SELECT * FROM A WHERE b@>'{"c":1}';
在
时返回所有行SELECT * FROM A WHERE b@>'{"c":1,"d":null}';
返回none(由于d在第一行中不为空);
答案 0 :(得分:2)
您可以使用?
operator来测试是否存在密钥。要找到不存在密钥的那些,可以否定表达式:
select *
from a
where not b ? 'd';