在mysql 5.7中从json数组中提取密钥

时间:2019-07-08 12:18:19

标签: mysql sql json mysql-5.7

我有一个带有json列的表。下面是示例:表员工

id emp_json
1 {"details" : [{"10":"909"},{"11":"910"}]}
2 {"details" : [{"20":"809"},{"21":"810"}]}

现在我想从json数组中提取ID

我尝试了以下查询。

SELECT JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[0]') FROM employee u ;

但是这只给了我一个来自数组第一个对象的键。 据我了解,这是因为$ [0]

预期是

id json_key
1  10
1  11
2  20
2  21

预先感谢

1 个答案:

答案 0 :(得分:0)

这将使您以逗号分隔,仅选择索引0,应选择1

SELECT
id,
CONCAT(
   JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[0]'),
   ",",
   JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[1]')
) As json_key
FROM employee u ;

输出:-

| id  | json_key      |
| --- | ------------- |
| 1   | ["10"],["11"] |
| 2   | ["20"],["21"] |