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
Lepaskan: 2024-12-31 05:57:16
asal
623 orang telah melayarinya

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

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

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

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!

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