ホームページ >データベース >mysql チュートリアル >一致するユーザー名に基づいて SQL テーブル間でデータを効率的にコピーするにはどうすればよいですか?
一致するユーザー名に基づいて SQL テーブルを更新する: 効率的なアプローチ
table_a
と table_b
という 2 つの SQL テーブルがあり、両方に user_name
列が含まれていると想像してください。 目的は、ユーザー名が一致する行のみ、table_b
の特定の列から table_a
の対応する列にデータをコピーすることです。
最適化された SQL クエリ
このデータ転送を実現する効果的な SQL ステートメントは次のとおりです。
<code class="language-sql">UPDATE table_a SET column_a_1 = (SELECT table_b.column_b_1 FROM table_b WHERE table_b.user_name = table_a.user_name), column_a_2 = (SELECT table_b.column_b_2 FROM table_b WHERE table_b.user_name = table_a.user_name) WHERE EXISTS (SELECT 1 FROM table_b WHERE table_b.user_name = table_a.user_name);</code>
このクエリは次のように動作します:
column_a_1
の table_a
を column_b_1
の table_b
の値で更新し、user_name
に基づいて行を照合します。column_a_2
の table_a
の対応する値を使用して、column_b_2
の table_b
を更新します。EXISTS
句により、両方のテーブルに存在する user_name
エントリに対してのみ更新が行われるようになり、エラーが防止されます。最適なパフォーマンスを得るには、user_name
と table_a
の両方の table_b
列にインデックスがあることを確認してください。このインデックス作成により、クエリの速度と効率が大幅に向上します。
以上が一致するユーザー名に基づいて SQL テーブル間でデータを効率的にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。