我使用以下查询来更新mysql中的users表
update users set user_likes =
(CASE WHEN like_by_users NOT LIKE '%user_name%'
AND dislikes_by_users NOT LIKE '%user_name%'
THEN (user_likes +1) ELSE user_likes END)
WHERE post_id = '2221'
这对我来说很好,但我也想像这样更新likes_by_users
likes_by_users = CONCAT(likes_by_users,' ','user_name')
我试过这样做
update users set user_likes =
(CASE WHEN like_by_users NOT LIKE '%user_name%'
AND dislikes_by_users NOT LIKE '%user_name%'
THEN (user_likes +1), likes_by_users = CONCAT(likes_by_users,' ','user_name')
ELSE user_likes END)
WHERE post_id = '2221'
但它根本不起作用。 我不想再次检查条件但是如果上面提到的条件为真,那么它应该更新两个列(user_likes)和(likes_by_users)不仅(user_likes),如果条件为false,那么它不应该更新任何列。
答案 0 :(得分:0)
您可以借助WHERE子句来完成此操作。
UPDATE `users`
SET `user_likes` = `user_level` + 1, `likes_by_users` = CONCAT(`likes_by_users`, ' ', 'user_name')
WHERE `post_id` = '2221'
AND `like_by_users` NOT LIKE '%user_name%'
AND `dislikes_by_users` NOT LIKE '%user_name%'
答案 1 :(得分:0)
尝试这样
update users
Set user_likes = IF(like_by_users NOT LIKE '%user_name%' AND dislikes_by_users NOT LIKE '%user_name%',(user_likes + 1), user_likes),
likes_by_users = IF(like_by_users NOT LIKE '%user_name%' AND dislikes_by_users NOT LIKE '%user_name%', CONCAT(likes_by_users,' ','user_name'), user_likes)
WHERE post_id = 2221