当提交upvote时,这个MySQL会将用户的信誉增加5。
UPDATE user_profiles
SET reputation = reputation +5
WHERE user_id = $question_author_id;
现在我要做一个区分:
如果向上投票是针对某个问题,则增量应为5,
如果upvote是一个答案,那么增量应该是10。
答案可以通过在forum qa_qa_parent_id表forum_qa字段中存在一个整数来标识。
所以我想到了这个但没用:
UPDATE user_profiles
IF (SELECT forum_qa_parent_id
FROM forum_qa
WHERE forum_qa_id = $question_id) IS NOT NULL
THEN SET reputation = reputation +10
WHERE user_id = $question_author_id;
ELSE SET reputation = reputation +5
WHERE user_id = $question_author_id;
END IF;
有人想教我怎么做吗?
最佳答案
如果在查询中进行逻辑比较,则需要使用CASE语句。http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
UPDATE user_profiles
SET reputation = reputation +
case when (
SELECT forum_qa_parent_id
FROM forum_qa
WHERE forum_qa_id = $question_id) is not null then 10 else 5 end
WHERE user_id = $question_author_id;
一些类似的东西-你可能需要把它稍微修饰一下。