Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengemas kini Nilai Lajur dalam Satu Jadual Berdasarkan Nilai daripada Jadual Lain?

Bagaimanakah Saya Boleh Mengemas kini Nilai Lajur dalam Satu Jadual Berdasarkan Nilai daripada Jadual Lain?

Mary-Kate Olsen
Lepaskan: 2025-01-17 04:57:10
asal
870 orang telah melayarinya

How Can I Update Column Values in One Table Based on Values from Another Table?

Mengemas kini Lajur Jadual Menggunakan Data daripada Jadual Lain

Panduan ini menunjukkan cara mengemas kini nilai lajur dalam satu jadual pangkalan data menggunakan data daripada yang lain, dengan mengandaikan kedua-dua jadual berkongsi medan yang sama untuk rekod yang sepadan. Mari kita pertimbangkan dua jadual, tableA dan tableB, dengan struktur yang serupa:

id name value
1 Joe 22
2 Derk 30

Matlamat kami adalah untuk mengemas kini lajur value dalam tableB dengan nilai yang sepadan daripada tableA, memadankan baris berdasarkan lajur name.

Kaedah 1: Menggunakan Subkueri

Pendekatan paling mudah melibatkan pernyataan UPDATE dengan subkueri:

<code class="language-sql">UPDATE tableB
SET value = (SELECT value FROM tableA WHERE tableA.name = tableB.name)
WHERE EXISTS (SELECT 1 FROM tableA WHERE tableA.name = tableB.name);</code>
Salin selepas log masuk

Pernyataan ini dikemas kini tableB.value dengan value dari tableA tempat medan name sepadan. Klausa WHERE EXISTS memastikan bahawa hanya baris dengan nama yang sepadan dalam kedua-dua jadual dikemas kini, mengelakkan ralat jika nama wujud dalam tableB tetapi tidak dalam tableA.

Kaedah 2: Menggunakan JOIN

Kaedah yang lebih fleksibel menggunakan INNER JOIN untuk pemadanan yang cekap:

<code class="language-sql">UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = tableA.value;</code>
Salin selepas log masuk

Pendekatan ini secara langsung menyertai tableB dan tableA pada lajur name dan mengemas kini tableB.value dengan tableA.value untuk setiap baris yang sepadan. Ini biasanya lebih pantas daripada menggunakan subkueri.

Kaedah 3: Kemas Kini Bersyarat dengan JOIN

Untuk kemas kini bersyarat, di mana anda mungkin ingin mengemas kini hanya dalam keadaan tertentu, gunakan pernyataan IF atau CASE dalam fasal SET:

<code class="language-sql">UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe';</code>
Salin selepas log masuk

Contoh ini hanya mengemas kini tableB.value jika tableA.value lebih besar daripada 0 dan hanya untuk baris dengan tableA.name ialah 'Joe'. Anda boleh menyesuaikan keadaan IF atau CASE untuk memenuhi keperluan khusus anda. Ingat untuk menggantikan 'Joe' dengan keadaan yang sesuai untuk bekas penggunaan anda.

Pilih kaedah yang paling sesuai dengan keperluan anda. Kaedah 2 (menggunakan JOIN) biasanya lebih disukai kerana kecekapan dan kebolehbacaannya, manakala Kaedah 3 menawarkan kawalan yang lebih besar ke atas proses kemas kini. Sentiasa sandarkan data anda sebelum menjalankan UPDATE pernyataan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Nilai Lajur dalam Satu Jadual Berdasarkan Nilai daripada Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan