Подтвердить что ты не робот

Группировать MySQL и объединять значения JSON

Я использую некоторые собственные поля JSON для хранения информации о некоторых объектах приложения в базе данных MySQL 5.7.10. Я могу иметь "N" строк для "сущности" и должен свертывать и объединять объекты JSON вместе, и любые конфликтующие ключи должны заменяться вместо слияния. Я могу сделать это с помощью кода, но если я смогу сделать это изначально и эффективно в MySQL еще лучше.

Я попытался использовать эту комбинацию GROUP_CONCAT и JSON_MERGE, но я столкнулся с двумя проблемами:

  • JSON_MERGE не будет принимать результаты GROUP_CONCAT как допустимый аргумент
  • JSON_MERGE объединяет конфликтующие ключи вместо их замены. То, что мне действительно нужно, это больше JSON_SET, но с номером "N" JSON docs вместо обозначения "ключ, значение".

Возможно ли это с текущей реализацией MySQL JSON?

4b9b3361

Ответ 1

Агрегация значений JSON

Для агрегирования значений JSON значения SQL NULL игнорируются как для других типов данных. Значения, отличные от NULL, преобразуются в числовой тип и агрегируются, за исключением MIN(), MAX() и GROUP_CONCAT(). Преобразование в число должно давать значимый результат для значений JSON, которые являются числовыми скалярами, хотя (в зависимости от значений) может происходить усечение и потеря точности. Преобразование в число других значений JSON может не дать значимого результата.

Я только что нашел это в mysql docs