Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyalin Baris dengan Cekap dari Satu Jadual ke Jadual Lain Semasa Mencegah Pendua?
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
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!