Menyalin Data Dalam Jadual
Dalam pangkalan data hubungan, selalunya berguna untuk menyalin data dari satu baris ke baris lain dalam jadual yang sama. Artikel ini meneroka kaedah untuk mengemas kini nilai baris menggunakan data daripada baris berbeza dalam jadual yang sama.
Pertimbangkan jadual dengan struktur berikut:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
Matlamatnya adalah untuk mengemas kini nilai untuk baris dengan nilai yang tiada dalam lajur "VALUE" dengan mengambil nilai dari baris lain dengan "NAME" yang sama. Output yang dijangkakan:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Penyelesaian melibatkan penyatuan diri. Menggunakan jadual sementara untuk menyimpan hanya baris bukan nol, kami boleh mengemas kini jadual asal:
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
Penjelasan:
Dikemas kini Pertanyaan:
Penyelesaian yang disediakan boleh diperhalusi untuk mencapai output yang diingini:
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
Atas ialah kandungan terperinci Bagaimana untuk Menyalin Data Dalam Jadual Menggunakan Self-Join?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!