2

こんにちは、私の SQL ケース ステートメントが正しくなく、id 1 ~ 3 のフィールド Age を NULL に設定していることに気付きました。どうすればこれが起こらないようにできますか?

ありがとう

UPDATE table 
SET `Name` = CASE `id`
               WHEN 1 THEN 'Sam'  
               WHEN 2 THEN 'Adam'  
               WHEN 3 THEN 'James'  
               WHEN 4 THEN 'Chris'
             END, 
    `Age` = CASE `id` 
               WHEN 4 THEN '22'
            END  
WHERE `id` IN (1,2,3,4)
4

3 に答える 3

4

ケース式に追加ELSE Ageします。

`Age` = CASE `id` WHEN 4 THEN '22' ELSE `Age` END
--                                 ^^^^^^^^^^

これにより、年齢が元の値に戻されます。

完全なクエリは次のようになります。

UPDATE `table`
SET `Name` = CASE `id`
                 WHEN 1 THEN 'Sam' 
                 WHEN 2 THEN 'Adam'
                 WHEN 3 THEN 'James'
                 WHEN 4 THEN 'Chris'
             END,
    `Age`  = CASE `id`
                 WHEN 4 THEN '22'
                 ELSE `Age`
             END
WHERE `id` IN (1,2,3,4)
于 2012-12-22T22:57:24.090 に答える
2

私はあなたがこれを望んでいると思います:

UPDATE table 
SET `Name` = 
    CASE `id` 
        WHEN 1 THEN 'Sam'  
        WHEN 2 THEN 'Adam'  
        WHEN 3 THEN 'James'  
        WHEN 4 THEN 'Chris'  
    END, 
    `Age` = 
    CASE `id` 
        WHEN 4 THEN '22' 
        ELSE Age 
    END  
WHERE `id` IN (1,2,3,4)

これはテストしていませんが、動作するはずです。

于 2012-12-22T22:58:53.993 に答える
0

WHEN... THEN を 1 ~ 3 に追加する必要があります。そうしないと、何も割り当てられません。または、else を追加します。

于 2012-12-22T22:57:34.400 に答える