如何在此声明中提出有条件的IF?

pep*_*epe 2 mysql sql conditional if-statement

当提交upvote时,此MySQL将使用户的声誉增加5.

UPDATE  user_profiles
SET     reputation = reputation +5
WHERE   user_id = $question_author_id;
Run Code Online (Sandbox Code Playgroud)

现在我想区分一下:

  • 如果upvote是一个问题,增量应为5,
  • 如果upvote是答案,则增量应为10.

可以通过表forum_qa的字段forum_qa_parent_id中存在整数来识别答案.

所以我提出了这个,但它不起作用:

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;
Run Code Online (Sandbox Code Playgroud)

任何人都想告诉我如何使这项工作?

Der*_*omm 6

如果在查询中进行逻辑比较,则需要使用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;
Run Code Online (Sandbox Code Playgroud)

沿着这些方向的东西 - 你可能需要稍微触摸一下.