SQLで複数行をUPDATEする方法|WHERE条件でまとめて更新【SQL例あり】

  • URLをコピーしました!

データベースを運用していると、特定の条件に一致する複数レコードをまとめて更新したい場面は頻繁に発生します。例えば「特定のユーザーのステータスを一括変更する」「在庫切れの商品をまとめて更新する」などです。

SQL初心者の方の中には「UPDATEは1行ずつ実行するものでは?」と考えている方もいますが、実際にはWHERE句を使えば複数行をまとめて更新できます。これはSQLの基本機能の一つであり、実務でも非常によく使われる処理です。

この記事では、SQLで複数行をUPDATEする基本構文から、複数条件・IN句・CASEを使った実践的な更新方法まで、SQL例を交えて解説します。

目次

SQLで複数行をUPDATEする基本構文

UPDATE・SET・WHEREの関係を示した基本構文図

SQLで複数行を更新する場合は、UPDATE文とWHERE句を使用します。基本構文は次の通りです。

UPDATE テーブル名
SET 列名 = 更新値
WHERE 条件

WHERE句に一致したレコードがすべて更新される仕組みです。つまり、条件に一致する行が複数存在すれば、そのすべてが更新対象になります。

例えば以下のようなユーザーテーブルがあるとします。

idnamestatus
1Tanakainactive
2Satoinactive
3Suzukiactive

inactiveのユーザーをすべてactiveに更新するSQLは次のようになります。

このSQLを実行すると、statusがinactiveのレコードがすべて更新されます。

WHERE条件で複数行をUPDATEするSQL例

WHERE句を使えば、特定の条件に一致する複数レコードをまとめて更新できます。

例えば「在庫が0の商品を在庫切れに変更する」場合は次のSQLになります。

更新前のデータ

idproductstockstock_status
1keyboard0available
2mouse10available
3monitor0available

更新後

idproductstockstock_status
1keyboard0out_of_stock
2mouse10available
3monitor0out_of_stock

このように、条件に一致する複数レコードを一度のSQLで更新できます。

複数条件でUPDATEする方法(AND / OR)

UPDATE文ではANDやORを使って複数条件を指定できます。これにより更新対象をより細かく制御できます。

主な条件の意味は次の通りです。

条件説明
ANDすべての条件を満たす
ORいずれかの条件を満たす

例:東京のinactiveユーザーをactiveに変更

例:東京または大阪のユーザーを更新

このように複数条件を組み合わせることで、更新対象を柔軟に指定できます。

IN句で複数IDをまとめてUPDATEする方法

特定の複数レコードをまとめて更新したい場合はIN句を使用します。

例:IDが1・3・5のユーザーを更新

同じ条件をORで書くこともできます。

しかしIN句を使う方がSQLがシンプルになります。

方法SQL例
ORid=1 OR id=3 OR id=5
INid IN (1,3,5)

CASEを使って複数行を異なる値でUPDATEする

CASE式を使うと、レコードごとに異なる値を設定できます。

例:ユーザーごとにポイントを変更する場合

更新結果

idpoint
1100
2200
3300

この方法はデータ移行や一括メンテナンスでよく使用されます。

UPDATE時の注意点(WHEREなしは危険)

UPDATE文で最も注意すべきポイントはWHERE句です。

WHERE句を指定しない場合、テーブルのすべてのレコードが更新されます。

このSQLを実行すると、usersテーブルの全ユーザーがactiveになります。

実務では次の手順でUPDATEを実行するのが安全です。

手順内容
1SELECTで対象レコード確認
2WHERE条件を確認
3UPDATE実行

このように対象レコードを確認してからUPDATEすることで、誤更新を防げます。

SQLのUPDATE処理が極端に遅い場合、テーブルサイズやINDEX構成が原因になっていることがあります。UPDATEが遅くなる仕組みやパフォーマンス低下の原因については、以下の記事で詳しく解説しています。

よくある質問(Q & A)

SQLで複数行を一括更新できますか?

できます。UPDATE文のWHERE句を使えば、条件に一致する複数レコードをまとめて更新できます。

UPDATEで複数列を同時に更新できますか?

可能です。SET句でカンマ区切りで指定します。

UPDATEで複数IDを指定する方法は?

IN句を使う方法が一般的です。

まとめ

SQLではUPDATE文とWHERE句を組み合わせることで、複数行をまとめて更新できます。

基本の仕組みは「WHERE条件に一致するレコードをすべて更新する」というものです。

よく使われる更新方法は次の通りです。

方法用途
WHERE条件一致レコード更新
AND / OR複数条件更新
IN複数ID更新
CASE行ごとに異なる値

特に注意したいのはWHERE句の指定です。WHERE句を忘れると全レコードが更新されるため、実務では必ずSELECTで対象レコードを確認してからUPDATEを実行するようにしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
目次
0
あなたの考えが大好きです、コメントしてください。x