Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyalin Data Dalam Jadual Menggunakan Self-Join?

Bagaimana untuk Menyalin Data Dalam Jadual Menggunakan Self-Join?

Linda Hamilton
Lepaskan: 2024-11-20 11:29:02
asal
877 orang telah melayarinya

How to Copy Data Within a Table Using Self-Join?

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
Salin selepas log masuk

Penjelasan:

  • Subquery (PILIH DISTINCT ID, NAME, VALUE... ) mencipta jadual sementara t1 dengan hanya bukan nol baris.
  • Penyata KEMASKINI kemudian bergabung dengan t dengan t1 pada lajur ID dan NAME.
  • Jika nilai sepadan dan lajur VALUE dalam t adalah batal, ia dikemas kini dengan VALUE yang sepadan daripada t1.

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 != '' 
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan