ホームページ >データベース >mysql チュートリアル >MySQL で複数のテーブルを同時に更新するにはどうすればよいですか?
MySQL で複数のテーブルを同時に更新する
リレーショナル データベースを使用する場合、複数のテーブルにわたる関連データを同時に更新する必要がある場合があります。標準の更新ステートメントを使用する場合、一度に 1 つのテーブルしか変更できないため、これは問題を引き起こします。
2 つのテーブル (Table_One と Table_Two) が非正規化の目的で同じ更新を必要とする次のシナリオを考えてみましょう。各テーブルの更新クエリはほぼ同一ですが、テーブル名とフィールドの可用性が異なります。
個別の更新
従来、これらの更新は個別に実行されていました。
UPDATE Table_One SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 AND lid = 1 LIMIT 1; UPDATE Table_Two SET win = win+1, streak = streak+1, score = score+200 WHERE userid = 1 LIMIT 1;
複数テーブルの更新
ただし、MySQL は複数テーブルの更新を使用したより効率的なソリューションを提供します。共通のフィールド (この場合は「userid」) でテーブルを結合すると、単一のクエリで両方のテーブルを更新できます。
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;
複数のテーブルの更新では、 LIMIT 句はサポートされていないため、慎重に使用しないと意図しない更新が発生する可能性があります。特定のシナリオでは、ストアド プロシージャやトランザクションなどの代替ソリューションの方が適切な場合があります。
以上がMySQL で複数のテーブルを同時に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。