数据库服务器环境
数据库 版本 sql >mysql 5.7.34 PostgreSQL 10.3
原表结构和数据
sql">create table students
(
name varchar ,
gender varchar ,
age int ,
scores json b
) ;
INSERT INTO public . students ( name, gender, age, scores) VALUES ( '张三' , '男' , 34 , '[{"语文": "78"},{"数学": "90"}]' ) ;
INSERT INTO public . students ( name, gender, age, scores) VALUES ( '李四' , '女' , 21 , '[{"语文": "89"},{"数学": "67"}]' ) ;
INSERT INTO public . students ( name, gender, age, scores) VALUES ( '王二' , '女' , 27 , null ) ;
select *
from students ;
students
name gender age scores 张三 男 34 [{“语文”: “78”}, {“数学”: “90”}] 李四 女 21 [{“语文”: “89”}, {“数学”: “67”}] 王二 女 27 NULL
SQL
sql">select * , ( scores - > 0 ) - >> '语文' ::text as score
from students
where scores is not null
AND exists (
select 1
from json b_array_elements( students. scores) r
where r- >> '语文' > '80'
) ;
结果
name gender age scores score 李四 女 21 [{“语文”: “89”}, {“数学”: “67”}] 89
SQL
sql">
结果
相关文章导读
sql >mysql 在select查询语句中使用临时变量累计求和 ; 相同列值的记录中再根据条件取其中最大或最新一条; sql >mysql 经纬度求距离并排序
sql >mysql pgsql 实现多行记录合并成一行 分组合并 用指定字符做分割
sql >mysql pgsql 多行记录转JSON数组字段 行转json 列