查询排除了json值且json键不存在的记录

Posted

技术标签:

【中文标题】查询排除了json值且json键不存在的记录【英文标题】:Query for records with excluded json value and where json key doesn't exist at the same time 【发布时间】:2022-01-11 23:56:10 【问题描述】:

我有一个students 表,其中有一个名为json 的json 列。它有不同的键。我想召唤没有rating 键的特定Fail 值的记录,同时记录不存在json 键rating 的记录。如何实现?

# Objects

json:  rating: 'Pass', ... 
json:  grade: 'A', ...
json:  rating: 'Fail', ... 

我基本上需要排除带有rating: 'Fail'的记录并返回所有其他对象,包括那些json键rating不存在的对象。

查询的结果应该如下:

json:  rating: 'Pass', ... 
json:  grade: 'A', ... 

提前谢谢你。

【问题讨论】:

【参考方案1】:

在 SQL 中你可以这样做:

select *
from students
where "json" ? 'rating'  -- only include those that have the key rating
  and not "json" @> '"rating": "fail"' -- don't include those with "fail"

【讨论】:

它会选择那些没有关键评级的对象吗?

以上是关于查询排除了json值且json键不存在的记录的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中如何在关联表中查询出其中一个外键不存在的数据?

检查 JSON 密钥是不是存在

在相同的事务方法中使用 CriteriaBuilder JPA 插入和更新错误“外键不存在”

单个查询中的 Postgresql 多个连接,其中连接的外键不存在于所有表中

Mongodb-查询json数组中的字段是不是存在

SQL正则表达式检查JSON数组中是否存在至少一个项目