2012-08-30 58 views
0

这是驱使我坚果,所以任何帮助将不胜感激。使用CASE WHEN语句更新多个表中的行 - 不工作

我想通过用户给出的数字来增加表格的特定行中的点数总计。我有一些PHP生成动态基于表单输入这样的说法:

UPDATE users SET points = CASE userID 
    WHEN 11 THEN (points + 1) 
    WHEN 16 THEN (points + 6) 
    WHEN 7 THEN (points + 7) 
    WHEN 10 THEN (points + 10) 
WHERE userID IN (11,16,7,10) 
END 

我不想存储在PHP变量的值,由于多个访问的问题。

+4

快速浏览一下,我会说END语句需要在WHERE语句之前去。 – netfire

+0

我将在CASE表达式中包含一个'ELSE points'。你不需要查询,但为了防止另一个值被添加到那个IN列表中......我希望保持'points'列的值不变,而不是将它设置为NULL。 – spencer7593

回答

3

您的语法错误。

您的WHERE之前需要 “END”:

UPDATE users 
    SET points = 
     (CASE userID 
      WHEN 11 THEN (points + 1) 
      WHEN 16 THEN (points + 6) 
      WHEN 7 THEN (points + 7) 
      WHEN 10 THEN (points + 10) 
     end) 
WHERE userID IN (11,16,7,10) 

我重新格式化查询。我将“结束”放在同一列中,以防止出现这种问题。

+0

非常感谢你,几分钟内解决了几个小时的辛劳。我希望我早点问:) – user1530056