MySQL字段内容为多层JSON字符串,根据其中的属性进行去重
一、条件
- 数据库表:table_a
- 字段名:field_value
- 字段内容格式:
{
"code": 200,
"data": {
"key": "abc123",
"results": [{
"code":"mmm111",
"name":"张三"
}]
},
"message": "消息"
}
二、需求
- 对表table_a中,字段field_value的内容中,data对象的results数组,第一条数据的code字段进行去重查询。
三、SQL语句
SELECT
DISTINCT JSON_EXTRACT(field_value, '$.data.results[0].code') AS code
FROM from table_a
四、解析
- DISTINCT:针对指定字段进行去重。
- JSON_EXTRACT:Mysql5.7及之后的版本里提供的函数。可以通过key查询value值。
1. 如果json字符串不是数组,则直接使用 $.字段名
2. 如果json字符串是数组,则直接使用 $[下标]