PostgreSQLのSQL文でデータを一括更新する方法と実装例

sql-update-case
  • URLをコピーしました!

データベースを扱う中で、特定の条件に基づいてデータを一括更新する必要が生じることはよくあります。
本記事では、PostgreSQLを使用して複雑な条件を満たすデータの更新方法について解説します。
特に、CASE 文を用いた柔軟なデータ更新の方法を実装例とともに紹介します。

目次

シナリオ

以下の要件を満たすSQLクエリを作成します。

  1. テーブル名は example_table とします。
  2. 指定された条件に基づいて、user_idcompany_id をそれぞれ 1122 に更新します。
  3. 別のカラム customer_id を以下の条件に基づいて変更します。
  4. ただし、user_id5, 10, 15 のレコードは対象外とします。

実装例

以下に要件を満たすSQLクエリを示します。

UPDATE example_table
SET
    user_id = 11,
    company_id = 22,
    customer_id = CASE
        WHEN customer_id = 1 THEN 6
        WHEN customer_id = 2 THEN 7
        WHEN customer_id = 3 THEN 8
        WHEN customer_id = 4 THEN 5
        ELSE customer_id
    END
WHERE user_id NOT IN (5, 10, 15);

クエリの解説

  1. 更新対象の列を指定する
  2. 条件による値の変更
  3. 対象外条件を設定する

注意点

  • バックアップの取得
  • トランザクションの利用
BEGIN;

UPDATE example_table
SET
    user_id = 11,
    company_id = 22,
    customer_id = CASE
        WHEN customer_id = 1 THEN 6
        WHEN customer_id = 2 THEN 7
        WHEN customer_id = 3 THEN 8
        WHEN customer_id = 4 THEN 5
        ELSE customer_id
    END
WHERE user_id NOT IN (5, 10, 15);

-- 更新内容を確認
SELECT * FROM example_table WHERE user_id = 11;

-- 問題がなければコミット
COMMIT;

-- 問題があればロールバック
-- ROLLBACK;

まとめ

PostgreSQLUPDATE文は、柔軟性が高く、条件付きでデータを一括更新する際に非常に便利です。
特に、CASE 文を活用することで複雑な条件を簡潔に記述できます。
システム開発やデータメンテナンスの際には、この手法を活用して効率的に作業を進めましょう。

問題解決や効率化に役立つ他のテクニックについても随時紹介していきますので、ぜひ参考にしてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次