SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.12.2021 19:29:23

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 841

JSON: как посчитать min/max, сумму и другие агрегирующие значения

Внезапно я осознал, что не понимаю, как из поля типа JSON выбрать, например, наибольшее из значений.

Код:

CREATE TABLE test (
    i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    j JSON
);

INSERT INTO test (j) VALUES
    ('[10, 20, 30]'),
    ('[100, 500]');

Код:

mysql> SELECT * FROM test;
+---+--------------+
| i | j            |
+---+--------------+
| 1 | [10, 20, 30] |
| 2 | [100, 500]   |
+---+--------------+

Как выглядит запрос, который для каждой записи выберет максимальное число из массивов в колонке j?

Неактивен

 

#2 17.12.2021 20:30:33

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2370

Re: JSON: как посчитать min/max, сумму и другие агрегирующие значения

LazY, полагаю, тебе сюда смотреть
https://dev.mysql.com/doc/refman/8.0/en … json-table


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 18.12.2021 11:17:33

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3867

Re: JSON: как посчитать min/max, сумму и другие агрегирующие значения

Похоже, что такого типа функции в MySQL еще не поддерживаются. Задача похожа на вычисление суммы элементов массива JSON. Для этого предлагают написать хранимую функцию:
https://stackoverflow.com/a/45297362
Функция для MAX полностью аналогична.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson