Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyalin Baris dengan Cekap dari Satu Jadual ke Jadual Lain Semasa Mencegah Pendua?

Bagaimana untuk Menyalin Baris dengan Cekap dari Satu Jadual ke Jadual Lain Semasa Mencegah Pendua?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 05:57:16615semak imbas

How to Efficiently Copy Rows from One Table to Another While Preventing Duplicates?

Menyalin Baris dengan Pengendalian Pendua dalam Jadual Skema Sama

Anda mahu memindahkan baris daripada jadual 'srcTable' ke 'destTable' sambil menghalang pendua . Walau bagaimanapun, menggunakan subkueri dalam klausa WHERE tidak berkesan untuk anda.

Menyelesaikan Isu dengan Klausa WHERE

Ralat terletak pada ketiadaan yang betul klausa dalam subkueri untuk mengenal pasti pendua. Tambah syarat yang diperlukan dalam subkueri anda seperti berikut:

INSERT INTO destTable
SELECT Field1, Field2, Field3, ...
FROM srcTable
WHERE NOT EXISTS(SELECT *
                 FROM destTable
                 WHERE (srcTable.Field1 = destTable.Field1
                       AND srcTable.Field2 = destTable.Field2
                       ... etc.)
                 )

Pendekatan Alternatif Menggunakan Outer Join

Sebagai alternatif, pertimbangkan untuk menggunakan gabungan luar untuk penyelesaian yang lebih ringkas:

INSERT INTO destTable
SELECT s.field1, s.field2, s.field3, ...
FROM srcTable s 
       LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...)
WHERE d.Key1 IS NULL

Mengendalikan Pendua dalam Sumber Jadual

Jika kebimbangan anda secara khusus terletak pada baris pendua dalam jadual sumber, pertimbangkan untuk menggunakan klausa yang berbeza dalam penyata sisipan anda:

INSERT INTO destTable
SELECT Distinct field1, field2, field3, ...
FROM srcTable  

Pengesyoran Tambahan

  • Sertakan nama medan tertentu dalam penyata sisipan anda dan bukannya menggunakan SELECT *.
  • Pertimbangkan untuk menggunakan pengindeksan yang sesuai untuk prestasi optimum.

Atas ialah kandungan terperinci Bagaimana untuk Menyalin Baris dengan Cekap dari Satu Jadual ke Jadual Lain Semasa Mencegah Pendua?. 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