SQL
5.条件分岐UPDATE
出典: SQL Server のカーソルを使うべきタイミングと書き方(業務SE現場の判断軸) — カーソルを避けるべき5つの場面(書き換え後のSETベース例) / 5.条件分岐UPDATE
-- ✅ CASE WHEN一発
UPDATE customer_master
SET grade = CASE
WHEN total_amount >= 1000000 THEN 'A'
WHEN total_amount >= 500000 THEN 'B'
ELSE 'C'
END;
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「カーソルを避けるべき5つの場面(書き換え後のSETベース例) / 5.条件分岐UPDATE」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
6 件-- ❌アンチパターン:カーソルで1行ずつUPDATE DECLARE @id INT, @flag CHAR(1); DECLARE c CURSOR FOR SELECT id, flag FROM target_table WHERE status = 0; OPEN c;未収録
1.一括UPDATE / INSERT
#2a730dcef025
-- ❌カーソル+変数累積 DECLARE @total DECIMAL(18,2)= 0; -- ...カーソル省略... SET @total = @total + @amount;
▶ 実行可
2.集計(SUM / COUNT / AVG)
#003642727eff
-- ✅ウィンドウ関数で一発 SELECT customer_id, purchase_date,
▶ 実行可
3.ランキング(ROW_NUMBER / RANK)
#26525d4eb78c
-- ✅カーソル基本テンプレ DECLARE @table_name SYSNAME; DECLARE @sql NVARCHAR(MAX);
▶ 実行可
カーソルの正しい書き方(DECLARE〜DEALLOCATEのテンプレ)
#50ab94bf4bc6
-- ❌重いデフォルト(GLOBAL / KEYSET /更新可能) DECLARE c CURSOR FOR SELECT id FROM big_table; -- ✅軽量カーソル(LOCAL / FAST_FORWARD / READ_ONLY)未収録
性能落とし穴— FAST_FORWARD READ_ONLY LOCALの意味
#4a5ae3f957e0
// ✅ C#側でループする(DataReader版) using (var conn = new SqlConnection(_connectionString)) using (var cmd = new SqlCommand("SELECT id, name FROM target_table WHERE status = 0", conn)) {未収録
C#側との連携— DataReaderでクライアント側ループに寄せる選択肢
#adcfd19ba723
