如果不存在,则追加mysql json字段

时间:2018-12-07 22:55:36

标签: mysql json mysql-json

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 :(得分:1)

我不这么认为。您可以在WHERE子句中测试JSON中是否已经存在该值。

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