Mysql
Mysql更新json if-else存在
我想用 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
一行刪除一個喜歡。