当提交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;

一些类似的东西-你可能需要把它稍微修饰一下。

10-04 17:26