ホームページ >データベース >mysql チュートリアル >単一の MySQL クエリで複数の行を異なる値で更新するにはどうすればよいですか?

単一の MySQL クエリで複数の行を異なる値で更新するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-17 11:17:14220ブラウズ

How Can I Update Multiple Rows with Different Values in a Single MySQL Query?

さまざまな値を持つ複数の MySQL 行を効率的に更新する

MySQL は、単一のクエリで複数の行を個別の値で更新するためのメソッドをいくつか提供しています。 IF ステートメントは機能しますが、CASE ステートメントは、特に複数の条件を扱う場合に、より簡潔で読みやすいソリューションを提供します。

特定のオフィス内のユーザーの役割に基づいて異なる table_users 値を割り当てて、cod_user テーブルを更新する必要があるシナリオを考えてみましょう。 複数の IF ステートメントを使用するよりもクリーンなアプローチを以下に示します。

このクエリは、CASE ステートメントを利用して、cod_user に基づいて user_rol を更新します:

<code class="language-sql">UPDATE table_users
SET cod_user = CASE
    WHEN user_rol = 'student' THEN '622057'
    WHEN user_rol = 'assistant' THEN '2913659'
    WHEN user_rol = 'admin' THEN '6160230'
    END,
date = '12082014'
WHERE user_rol IN ('student', 'assistant', 'admin')
AND cod_office = '17389551';</code>

内訳は次のとおりです:

  • CASE ステートメント: これは複数の条件をエレガントに処理します。各 WHEN 句は条件をチェックし、true の場合は、対応する cod_user 値を割り当てます。
  • 複数の条件: CASE ステートメントは、さまざまなユーザーの役割を効率的に管理します。
  • date update: 一致するすべての行の date フィールドが「12082014」に更新されます。 データベース設定に一致するように日付形式 (この例では「YYYYMMDD」) を忘れずに調整してください。
  • WHERE 句: これは、user_rol が 'student'、'assistant'、または 'admin' であり、cod_office が '17389551' である行のみに影響するように更新をフィルタリングします。 >
この方法は、複数の個別の

ステートメントや複雑なネストされた UPDATE 構造を使用する場合と比較して、より効率的で保守可能なソリューションを提供します。 IF ステートメントにより、可読性が向上し、クエリ ロジック全体が簡素化されます。CASE

以上が単一の MySQL クエリで複数の行を異なる値で更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。