如何计算在 MYSQL 列中找到的 JSON 中的相同值?
How can I count same values in JSON found in MYSQL column?
我正在 JSON 列中收集 JSON 数据。
我想计算此 JSON 数据中具有相同关键字的数字。
示例 JSON 列:
id
column
1
{ "2": { "model": "Test Model" }, "3": { "model": "Test Model" } }
2
{ "4": { "model": "Test Model" }, "2": { "model": "Test Model" } }
3
{ "1": { "model": "Test Model" }, "4": { "model": "Test Model" } }
4
{ "2": { "model": "Test Model" } }
我想要的输出:
key
count
2
3
4
2
3
1
1
1
我可以使用短代码轻松地做到这一点吗?
Mysql版本:8.0.27
SELECT jsontable.`key`, COUNT(*) `count`
FROM test
CROSS JOIN JSON_TABLE(JSON_KEYS(test.json_value),
'$[*]' COLUMNS (`key` INT PATH '$')) jsontable
GROUP BY jsontable.`key`
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=717eeeacb3bceb45a2094e46d37c8865
我正在 JSON 列中收集 JSON 数据。 我想计算此 JSON 数据中具有相同关键字的数字。
示例 JSON 列:
id | column |
---|---|
1 | { "2": { "model": "Test Model" }, "3": { "model": "Test Model" } } |
2 | { "4": { "model": "Test Model" }, "2": { "model": "Test Model" } } |
3 | { "1": { "model": "Test Model" }, "4": { "model": "Test Model" } } |
4 | { "2": { "model": "Test Model" } } |
我想要的输出:
key | count |
---|---|
2 | 3 |
4 | 2 |
3 | 1 |
1 | 1 |
我可以使用短代码轻松地做到这一点吗?
Mysql版本:8.0.27
SELECT jsontable.`key`, COUNT(*) `count`
FROM test
CROSS JOIN JSON_TABLE(JSON_KEYS(test.json_value),
'$[*]' COLUMNS (`key` INT PATH '$')) jsontable
GROUP BY jsontable.`key`
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=717eeeacb3bceb45a2094e46d37c8865