0

私がし PlayerID, goals, yellows,reds たいことは、単一のステートメントで playerID と偶数 (ゴール、イエロー、レッド) に基づいて列をインクリメントすることです。現在、一度に 1 つの 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)
4

1 に答える 1

1

UPDATE1 つのステートメントが必要な場合:

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) ;  
于 2012-06-10T21:07:01.437 に答える