ホームページ  >  記事  >  データベース  >  MySQL は 1 つのクエリで複数のテーブルを同時に更新できますか?

MySQL は 1 つのクエリで複数のテーブルを同時に更新できますか?

DDD
DDDオリジナル
2024-11-02 22:46:30830ブラウズ

Can MySQL update multiple tables simultaneously in a single query?

MySQL で複数のテーブルを同時に更新する

データベース操作では、複数のテーブルの値を同時に更新することが必要になる場合があります。粒度のレベルまたは追加の条件。一般的なシナリオは、複数のテーブルが非正規化の目的で同じデータを必要とする場合です。

そのような場合、各テーブルに対して別々の UPDATE クエリを実行すると、非効率的で冗長になる可能性があります。この記事では、複数の UPDATE 操作を 1 つの統合されたクエリに結合できるかどうかという問題について説明します。

複数テーブルの更新

MySQL ドキュメントでは、次のソリューションを提供しています。マルチテーブルの更新。このアプローチでは、共通の列または式を使用してテーブルを結合することで、同じクエリ内の複数のテーブルを更新できます。複数テーブルの更新の構文は次のとおりです。

UPDATE table1
INNER JOIN table2 ON (table1.column = table2.column)
SET table1.column1 = ..., table1.column2 = ...,
    table2.column1 = ..., table2.column2 = ...
WHERE ...

問題ステートメントに示されている質問を考えてみましょう: 列にいくつかの違いがある 2 つのテーブルそして同じアップデートが必要です。マルチテーブル更新アプローチを使用すると、2 つの UPDATE クエリを 1 つに結合できます。

UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid)
SET
  a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200,
  b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 
WHERE a.userid = 1 and a.lid = 1 AND b.userid = 1

この例では、Table_One には、Table_Two には存在しない追加の列 (蓋) があります。結合条件により、一致する行に対してのみ更新が実行されることが保証されます。

制限事項

複数テーブルの更新は複数のテーブルを一度に更新する便利な方法を提供しますが、いくつかの制限があります:

  • LIMIT サポートなし - 複数テーブルの更新LIMIT 句はサポートされていません。注意を怠ると、意図しない更新が発生する可能性があります。
  • 速度が低下する可能性があります - クエリと関係するデータの複雑さによっては、複数テーブルの更新は個別のクエリを実行するよりも遅くなる可能性があります。各テーブルにあります。

代替案ソリューション

特定の要件に応じて、複数テーブルの更新の代わりに検討すべき代替ソリューションがあります。

  • ストアド プロシージャ - ストアド プロシージャは、複数の操作を含む一連のデータベース操作をカプセル化するために使用されます。
  • トランザクション - トランザクションは、複数のデータベース操作を 1 つの単位として実行し、一貫性とデータの整合性を保証するメカニズムを提供します。

以上がMySQL は 1 つのクエリで複数のテーブルを同時に更新できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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