MySQL での複数の結合を伴うテーブルの更新
複数の結合を伴う複雑なデータベース クエリを操作する場合、特定のテーブルを更新すると問題が発生する可能性があります。結合の順序はパフォーマンスに大きな影響を与えないかもしれませんが、クエリの書き込みと読み取りのしやすさに影響を与える可能性があります。
目的は tableB テーブルを更新することである次の例を考えてみましょう。
UPDATE b FROM tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10;
上記のクエリでは、テーブル B の更新には、結合を通じてテーブル tableA と tableC が含まれます。ただし、tableB は FROM 句で指定される最初のテーブルではありません。
Microsoft SQL Server とは異なり、MySQL は複数テーブルの更新を異なる方法で処理します。 UPDATE 構文では、更新するテーブルを明示的に指定する必要はありません。代わりに、SET 句は、新しい値が割り当てられているカラムを含むテーブルを暗黙的に更新します。
MySQL 構文を使用して目的の更新を実現するには、クエリを次のように変更します。
UPDATE tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val + c.val WHERE a.val > 10 AND c.val > 10;
MySQL の UPDATEこの構文を使用すると、SET 句の列名を使用して、FROM 句の最初のテーブルではないテーブルを更新できます。
以上が複数の結合を使用して MySQL のテーブルを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。