Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyalin Data dengan Cekap Antara Jadual SQL Berdasarkan Padanan Nama Pengguna?

Bagaimana untuk Menyalin Data dengan Cekap Antara Jadual SQL Berdasarkan Padanan Nama Pengguna?

DDD
DDDasal
2025-01-15 11:13:45914semak imbas

How to Efficiently Copy Data Between SQL Tables Based on Matching Usernames?

Mengemas kini Jadual SQL Berdasarkan Padanan Nama Pengguna: Pendekatan Cekap

Bayangkan anda mempunyai dua jadual SQL, table_a dan table_b, kedua-duanya mengandungi lajur user_name. Matlamatnya adalah untuk menyalin data daripada lajur tertentu dalam table_b ke lajur yang sepadan dalam table_a, hanya untuk baris di mana nama pengguna sepadan.

Pertanyaan SQL Dioptimumkan

Berikut ialah pernyataan SQL yang berkesan untuk mencapai pemindahan data ini:

<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>

Pertanyaan ini beroperasi seperti berikut:

  1. Ia mengemas kini column_a_1 dalam table_a dengan nilai daripada column_b_1 dalam table_b, memadankan baris berdasarkan user_name.
  2. Ia mengemas kini serentak column_a_2 dalam table_a menggunakan nilai yang sepadan daripada column_b_2 dalam table_b.
  3. Klausa EXISTS memastikan kemas kini hanya berlaku untuk entri user_name yang terdapat dalam kedua-dua jadual, mengelakkan ralat.

Untuk prestasi optimum, pastikan anda mempunyai indeks pada lajur user_name dalam kedua-dua table_a dan table_b. Pengindeksan ini meningkatkan kelajuan dan kecekapan pertanyaan dengan ketara.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Data dengan Cekap Antara Jadual SQL Berdasarkan Padanan Nama Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn