1. ホーム
  2. sql

[解決済み】SQL Server 2005でCASE文を使ってレコードを更新したい。

2022-04-05 03:36:28

質問

UPDATE dbo.TestStudents  
SET LASTNAME = 
( CASE  
WHEN (LASTNAME = 'AAA') THEN 'BBB' 
WHEN (LASTNAME = 'CCC') THEN 'DDD' 
WHEN (LASTNAME = 'EEE') THEN 'FFF' 
ELSE  (LASTNAME)
END )

ステートメントは目的に応じて動作しますが、else条件はテーブルのすべてのレコードをスキャンします。影響を受けない行をそのままにしておく方法はないでしょうか?

どうすればいいですか?

を追加します。 WHERE

UPDATE dbo.TestStudents  
SET     LASTNAME =  CASE  
                        WHEN LASTNAME = 'AAA' THEN 'BBB' 
                        WHEN LASTNAME = 'CCC' THEN 'DDD' 
                        WHEN LASTNAME = 'EEE' THEN 'FFF' 
                        ELSE LASTNAME
                    END 
WHERE   LASTNAME IN ('AAA', 'CCC', 'EEE')