0

これは私を夢中にさせているので、どんな助けも大歓迎です。

ユーザーが指定した数だけ、テーブルの特定の行の合計ポイントを増やしようとしています。フォーム入力に基づいてこのステートメントを動的に生成する 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

1 に答える 1

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)

クエリを再フォーマットしました。この種の問題を防ぐために、「CASE」の「END」を同じ列に配置することを強調しています。

于 2012-08-30T21:10:24.357 に答える