У меня есть простая таблица внутри базы данных MySQL 8.0, например:
+-----------+---------+----------+
| id | data |created |
+-----------+---------+----------+
| INT | JSON |Timestamp |
+-----------+---------+----------+
Я могу заполнить свой JSONField, используя:
INSERT INTO mytable (`data`) VALUES ('{
"File": {
"Files": {
"Accounts": {
"Account": [{
"AccountID": "11",
"AccountDescription": "CASH",
"Balance": "600.00"
}, {
"AccountID": "111",
"AccountDescription": "Cash",
"Balance": "600.00"
}]
}
}
}
}');
И что я хочу, это извлечь SUM
всех значений баланса.
Я пробовал это:
SELECT SUM(JSON_UNQUOTE(JSON_EXTRACT(`data`, '$.File.Files.Accounts.Account[*].Balance'))) as 'result' FROM mytable WHERE id = 1;
Но дает результат:
+-----------+
| result |
+-----------+
| 0 |
+-----------+
Кроме того, если я избавлюсь от SUM
результат:
+-----------------------+
| result |
+-----------------------+
| ["600.00", "600.00"] |
+-----------------------+
Что заставляет меня поверить, что JSON_UNQUOTE
не работает и с этим вложенным массивом SELECT.
Как я могу запросить таблицу (без пользовательскихфункции предпочтительно), так что это дает:
+-----------+
| result |
+-----------+
| 1200 |
+-----------+