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 には存在しない追加の列 (蓋) があります。結合条件により、一致する行に対してのみ更新が実行されることが保証されます。
制限事項
複数テーブルの更新は複数のテーブルを一度に更新する便利な方法を提供しますが、いくつかの制限があります:
代替ソリューション
特定の要件に応じて、複数テーブルの更新の代わりに検討すべき代替ソリューションがあります。
以上がMySQL は 1 つのクエリで複数のテーブルを同時に更新できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。