Mengemas kini Baris dengan Data daripada Adik Beradik Meja yang Sama
Bayangkan jadual dengan struktur yang menyerupai ini:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | NULL |
4 | Test | NULL |
1 | Test3 | VALUE3 |
Tugas anda ialah mengisi NULL "VALUE" sel dengan data daripada baris lain yang mengandungi perkara yang sama "NAME" (iaitu, "Ujian" dan "Ujian2" harus mewarisi nilai daripada pendahulunya). Hasil yang diinginkan ialah:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Cabarannya terletak pada rujukan baris dalam jadual yang sama yang berkongsi nilai "NAME" tertentu. Penyelesaiannya melibatkan penggunaan pernyataan JOIN:
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
Dalam pernyataan ini, subquery (T1) mengekstrak baris yang berbeza dengan nilai "VALUE" bukan NULL dan bukan kosong. Pertanyaan utama (t) kemudian bergabung dengan subquery ini pada medan "ID" dan "NAME" untuk mengenal pasti baris yang akan dikemas kini. Akibatnya, sel "VALUE" kosong diisi dengan nilai yang sepadan daripada baris bukan kosong dengan nilai "NAME" yang sama.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Nilai NULL dalam Jadual dengan Data daripada Baris Berkongsi Nama Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!