json数组是这样的:
[
{"name":"a","score":20,"wrongID":[1,2,6,7]},
{"name":"b","score":50,"wrongID":[1,2,3,7]},
{"name":"c","score":40,"wrongID":[1,2,9,17]},
{"name":"d","score":70,"wrongID":[1,2,16,27]},
{"name":"e","score":80,"wrongID":[1,2,10,17]},
{"name":"f","score":50,"wrongID":[1,2,10,17,22,33]},
]
表名student,列名是examInfo
比如,我要获取数组里score为50的wrongID,要怎么获取呢??
我之前写了一条sql:
select examInfo->'$[*].wrongID' from student where examInfo->'$[*].score'=50;
结果查不出来,没数据也没报错,50变成了'50',结果也是一样,没数据。
有大牛知道怎么查吗?请教!!
大牛来了,这样写select examInfo->'$[*].wrongID' from student where examInfo->'$[*].score[0]'=50;
这是php?,,还有就是你写sql从json中查数据?
自顶啊!!!!求解!!!!!!!!
这个sql的问题在于$[*].score的返回值是一个json数组,这个返回值是无论如何不会等于50或者‘50’的。顺便问一句最后你怎么查出来的?
我也求解,要是解决请大神帖出来,多谢
不好意思,刚大意了,上面写的不对,如下这样写:
SELECT t1.rowobj -> '$.wrongID'
FROM (
SELECT examInfo->'$[0][0]' AS rowobj FROM student
UNION ALL
SELECT examInfo->'$[1][0]' AS rowobj FROM student
UNION ALL
SELECT examInfo->'$[2][0]' AS rowobj FROM student
UNION ALL
SELECT examInfo->'$[3][0]' AS rowobj FROM student
UNION ALL
SELECT examInfo->'$[4][0]' AS rowobj FROM student
UNION ALL
SELECT examInfo->'$[5][0]' AS rowobj FROM student
) t1
where t1.rowobj -> '$.score' = 50