Как удалить повторяющиеся переменные в JSON

#mysql #sql #json #mariadb

#mysql #sql #json #мариадб

Вопрос:

У меня есть команда:

 SELECT JSON_MERGE_PATCH ('{"variable": "1", "variable": "2", "anothervariable": "another"}', '{"variable": "3"}')
 

Однако этот запрос генерирует результат:

 {"variable": "3", "variable": "3", "anothervariable": "another"}
 

Мне нужен результат без дубликатов:

 {"variable": "3", "anothervariable": "another"}
 

Как это можно было бы устроить, пожалуйста?

На скрипке: https://dbfiddle.uk/?rdbms=mariadb_10.5amp;fiddle=57b13797114fecc96aa2b24b5f5e02d4

Как можно было бы организовать результат без дублирования? Порядок JSON в запросе не может быть изменен.

Спасибо за совет.

Комментарии:

1. Попробуйте dbfiddle .

Ответ №1:

 SELECT JSON_MERGE_PATCH ('{"variable": "3"}', '{"variable": "1", "variable": "2", "anothervariable": "another"}')
 

Комментарии:

1. Привет, спасибо, но не работает. Этот запрос возвращает неверный результат: «{«переменная»: «1», «anothervariable»: «другой»}» Но мне нужно получить результат: «{«переменная»: «3», «anothervariable»: «другой»}»

2. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки

3. Пожалуйста, добавьте некоторые пояснения.

4. Порядок JSON в запросе не может быть изменен. Дело в том, что это решение перезаписывает неправильное значение переменной. переменная = 1, но мне нужно значение с наивысшим приоритетом = 3. Поменяв местами JSON в запросе, пользователь изменил приоритет переменных. JSON, который находится в конце, имеет более высокий приоритет при merge_patch. Поэтому мне нужно решение, которое действительно решит проблему так, чтобы возвращалась переменная = 3.

5. В JSON нет никакого порядка. Это случайный порядок, в котором появляются элементы внутри. Так что у вас не будет шанса каждый раз получать правильный вариант. Даже если вы найдете способ заставить его работать на вашем компьютере, на другом компьютере с другим декодером JSON он может выглядеть совершенно по-другому. Сделайте свой JSN действительным там, где вы его создаете, не пытайтесь исправлять ошибки, сделанные ранее