Rumah >pangkalan data >tutorial mysql >Bagaimanakah cara saya mengemas kini nilai kosong dalam jadual berdasarkan data daripada baris lain dengan nama yang sama?

Bagaimanakah cara saya mengemas kini nilai kosong dalam jadual berdasarkan data daripada baris lain dengan nama yang sama?

Barbara Streisand
Barbara Streisandasal
2024-11-13 05:51:02291semak imbas

How do I update empty values in a table based on data from other rows with the same name?

Menyalin Data Antara Baris dalam Jadual

Dalam pengurusan pangkalan data, selalunya perlu untuk mengemas kini baris berdasarkan data daripada baris lain dalam meja yang sama. Pertimbangkan jadual dengan ID lajur, NAME dan VALUE yang mengandungi nilai NAME pendua, seperti berikut:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |         |
 4   |   Test    |         |
 1   |   Test3   |  VALUE3 |

Andaikan kami ingin mengemas kini medan VALUE kosong dalam baris dengan nilai NAME pendua. Untuk mencapai matlamat ini, kami boleh menggunakan pertanyaan SQL yang merujuk dan mengemas kini nilai dalam jadual yang sama.

Satu pendekatan melibatkan penggunaan pernyataan KEMASKINI dengan gabungan. Dalam pertanyaan berikut, kami menyertai data_table dua kali, menyalinkannya sebagai dt1 dan dt2:

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 

Pertanyaan ini mengenal pasti dan mengemas kini medan VALUE kosong (di mana dt1.VALUE kosong) dengan VALUE bukan kosong daripada baris lain dengan NAMA yang sama (di mana dt2.VALUE tidak kosong).

Sebagai alternatif, kita boleh menggunakan subquery untuk mengenal pasti baris dengan VALUE yang tidak kosong dan menyambungkannya kembali ke jadual asal untuk mengemas kini:

UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE
                        FROM data_table
                       WHERE VALUE IS NOT NULL AND VALUE != '') t1
   SET t.VALUE = t1.VALUE
 WHERE t.ID = t1.ID
   AND t.NAME = t1.NAME

Kedua-dua pertanyaan ini akan menghasilkan output yang diingini:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |  VALUE2 |
 4   |   Test    |  VALUE1 |
 1   |   Test3   |  VALUE3 |

Pendekatan ini memberikan fleksibiliti dalam memanipulasi data dalam jadual, membolehkan anda mengemas kini nilai berdasarkan kriteria yang termasuk baris lain dalam jadual yang sama meja.

Atas ialah kandungan terperinci Bagaimanakah cara saya mengemas kini nilai kosong dalam jadual berdasarkan data daripada baris lain dengan nama yang sama?. 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