Mysql

Mysql更新json if-else存在

  • July 1, 2022

我想用 if-else 條件更新我的原始數據。這是我的sql程式碼;

update posts
   set like = 
     if(json_contains(like,2,'$'),
         json_remove(like,replace(json_search(like,'one',2),'"','')),
         json_array_append(like,'$',2)
       )
    where id = 3

我的桌子;

這段 sql 程式碼之後id= 3應該是這樣的id = 2

綜上,:如果json包含,則從json中移除;如果 json 不包含,則將數據推送到數組

問題是它JSON_SEARCH() 不適用於整數。您必須使用字元串。

mysql> set @like = '["2"]';

mysql> select if(json_contains(@like,'["2"]','$'),
 json_remove(@like,json_unquote(json_search(@like,'one','2'))),
 json_array_append(@like,'$','2')) as `like`;
+------+
| like |
+------+
| []   |
+------+

mysql> set @like = '[]';

mysql> select if(json_contains(@like,'["2"]','$'),
 json_remove(@like,json_unquote(json_search(@like,'one','2'))),
 json_array_append(@like,'$','2')) as `like`;
+-------+
| like  |
+-------+
| ["2"] |
+-------+

在 MySQL 中使用 JSON 會使一切變得更加困難。我建議您將喜歡的內容儲存在第二張表中。然後只需INSERT一行添加一個喜歡,或DELETE一行刪除一個喜歡。

引用自:https://dba.stackexchange.com/questions/313994