Rumah >pangkalan data >tutorial mysql >Bagaimanakah cara saya mengemas kini nilai kosong dalam jadual berdasarkan data daripada baris lain dengan nama yang sama?
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!