Добавить, если не существует MySQL JSON поле - PullRequest
0 голосов
/ 08 декабря 2018

Есть ли в mysql функция JSON, которая будет игнорировать попытки добавить элемент, если он уже существует?Например:

update waitinglist SET
new = JSON_ARRAY_APPEND(new, '$', "orange")
where id=2;

update waitinglist SET
new = JSON_ARRAY_APPEND(new, '$', "orange")
where id=2;

Теперь мой массив выглядит так:

["apple", "orange", "orange", "orange", "orange"]

Но я хочу, чтобы он работал как набор, и просто был:

["apple", "orange"]

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 08 декабря 2018

Я так не думаю.Вы можете проверить, находится ли значение в JSON в предложении WHERE.

update waitinglist SET
new = JSON_ARRAY_APPEND(new, '$', '"orange"'))
where id=2
AND NOT JSON_CONTAINS(new, '"orange"')

Если вы обновляете несколько столбцов и хотите, чтобы это влияло только на этот столбец, вы можете использовать IF()оставить его без изменений, если значение уже есть.

update waitinglist SET
new = IF(JSON_CONTAINS(new, '"orange"'), new, JSON_ARRAY_APPEND(new, '$', '"orange"'))
where id=2
...