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?

Jan 17, 2025 am 04:57 AM

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:

1

2

3

UPDATE tableB

SET value = (SELECT value FROM tableA WHERE tableA.name = tableB.name)

WHERE EXISTS (SELECT 1 FROM tableA WHERE tableA.name = tableB.name);

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:

1

2

3

UPDATE tableB

INNER JOIN tableA ON tableB.name = tableA.name

SET tableB.value = tableA.value;

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:

1

2

3

4

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

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penggunaan memori MySQL di Docker Kurangkan penggunaan memori MySQL di Docker Mar 04, 2025 pm 03:52 PM

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Mar 04, 2025 pm 04:01 PM

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif Apa itu SQLite? Gambaran Keseluruhan Komprehensif Mar 04, 2025 pm 03:55 PM

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Mar 04, 2025 pm 03:54 PM

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Mar 04, 2025 pm 03:49 PM

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)? Mar 18, 2025 pm 12:00 PM

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

See all articles