MySQL: Kemas kini nilai lajur berdasarkan data daripada jadual lain
Soalan:
Andaikan terdapat dua jadual dengan struktur yang serupa:
id | name | value |
---|---|---|
1 | Joe | 22 |
2 | Derk | 30 |
Tugasnya ialah untuk mengemas kini lajur "nilai" dalam jadual B dengan nilai dalam jadual A berdasarkan nilai "nama" yang sepadan.
Penyelesaian:
Anda boleh menggunakan pernyataan SQL UPDATE dengan klausa JOIN untuk melaksanakan operasi kemas kini ini. Berikut ialah pertanyaan yang mungkin:
<code class="language-sql">UPDATE tableB INNER JOIN tableA ON tableB.name = tableA.name SET tableB.value = tableA.value;</code>
Pertanyaan ini akan mengemas kini lajur "nilai" semua baris dalam jadual B yang sepadan dengan jadual A, berdasarkan lajur "nama".
Kemas kini nilai dinamik:
Anda boleh mengubah suai pertanyaan untuk mengemas kini jadual B.value secara dinamik berdasarkan nilai dalam jadual A.value. Sebagai contoh, pertanyaan berikut hanya mengemas kini jadual B.value jika jadual A.value lebih besar daripada 0:
<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>
Dalam contoh ini, lajur "nilai" dalam baris dengan "nama" "Joe" dalam Jadual B akan dikemas kini dengan nilai daripada Jadual A hanya jika nilai dalam Jadual A lebih besar daripada 0. Jika tidak, nilai sedia ada dalam Jadual B akan kekal tidak berubah.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Nilai Lajur MySQL Berdasarkan Data dari Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!