0

次のクエリを使用して、mysql のユーザー テーブルを更新しました。

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) だけでなく (user_likes) と (likes_by_users) の 2 つの列を更新する必要があり、条件が偽の場合は列を更新しないでください。

4

2 に答える 2

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
于 2013-02-28T11:09:22.640 に答える
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%'
于 2013-02-28T11:02:23.347 に答える