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"]
有没有办法做到这一点?
答案 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