Как найти максимальное и минимальное значение в JSON массиве через sql запрос в MySQL?
Задача такая, БД в MySQL, в таблице есть 10 строк, один из столбцов типа JSON.
Нужно найти максимальное и минимальное значение в столбце с JSON с помощью sql запроса.
Пример таблицы:
id JSON_Col
1 {"Strength": [0]}
2 {"Strength": [12, 20, 35]}
3 {"Strength": [3]}
4 {"Strength": [3]}
5 {"Strength": [3]}
6 {"Strength": [0,23,58]}
7 {"Strength": [3]}
8 {"Strength": [3]}
9 {"Strength": [3]}
10 {"Strength": [3]}
У меня пишет ошибку:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(concat('[',JSON_Col,']'),
'$[*]'
COLUMNS(
NESTED PATH '$.Strengt' at line 3
Это больше похоже на костыль =)
в таблице indexes должно быть столько индексов сколько возможно максимальное число индексов в Strength
select min(json_extract(JSON_Col, CONCAT('$.Strength[', idx, ']'))) min_St
,max(json_extract(JSON_Col, CONCAT('$.Strength[', idx, ']'))) max_St
from tables
JOIN (
SELECT 0 AS idx UNION
SELECT 1 AS idx UNION
SELECT 2 AS idx UNION
SELECT 3 AS idx UNION
SELECT 4 AS idx UNION
SELECT 5 AS idx
) AS indexes
WHERE JSON_EXTRACT(JSON_Col, CONCAT('$.Strength[', idx, ']')) IS NOT NULL
Зато должно рабготать на 5.7 ;-)
Не тестировал! но должно работать