Mysql为每个id更新一个不同的字段(列)

时间:2012-06-10 14:23:40

标签: php mysql

我有一个数据库 PlayerID, goals, yellows,reds 我想要做的是在单个语句中基于playerID和even(目标,黄色,红色)增加列。目前,它一次完成一个playerID:

UPDATE players SET $event=$event+1 WHERE id=$playerID

其中$event将包含字段名称(goals, yellows, reds)

我想做的是将它全部放在一个声明中。如果你想象玩家1得到一个黄色而玩家2得到一个红色然后我会把这个陈述描述为:

UPDATE players SET (yellows=yellows+1,reds=reds+1) WHERE id=(1,2)

我知道上面的代码是错误的,但我希望它有助于了解我想要做什么。每个SET参数对应于相应的id参数。 单独的是:

  UPDATE players SET yellows=yellows+1 WHERE id=1
  UPDATE players SET reds=reds+1 WHERE id=2  

正在寻找:

UPDATE players SET (yellows=yellows+1,reds=reds+1) WHERE id IN (1,2)

1 个答案:

答案 0 :(得分:1)

如果您想要一个UPDATE声明:

UPDATE players 
SET yellows = CASE WHEN id = 1 
                     THEN yellows + 1
                     ELSE yellows
                   END  
  , reds    = CASE WHEN id = 2 
                     THEN reds + 1
                     ELSE reds 
              END
WHERE id IN (1, 2) ;