1. ホーム
  2. sql

[解決済み] SQL Server 2005 で CASE ステートメントを使用してレコードを更新したいのですが。

2022-03-06 20:27:36

質問

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')