Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Baris Pendua dalam SQL Server INSERT INTO SELECT Tanpa Pernyataan IF-ELSE?

Bagaimana untuk Mengelakkan Baris Pendua dalam SQL Server INSERT INTO SELECT Tanpa Pernyataan IF-ELSE?

Susan Sarandon
Susan Sarandonasal
2025-01-13 10:58:43431semak imbas

How to Avoid Duplicate Rows in SQL Server's INSERT INTO SELECT Without IF-ELSE Statements?

Kaedah untuk mengelakkan data pendua dalam SQL Server INSERT INTO SELECT pernyataan

Apabila menggunakan pernyataan INSERT INTO SELECT, adalah penting untuk mengelakkan pemasukan data pendua. Artikel ini menerangkan beberapa cara berkesan untuk mengelakkan masalah sedemikian dalam SQL Server tanpa menggunakan pernyataan bersyarat seperti IF-ELSE.

Kaedah 1: Gunakan NOT EXISTS

<code class="language-sql">INSERT INTO TABLE_2 (id, name)
SELECT t1.id, t1.name
FROM TABLE_1 t1
WHERE NOT EXISTS (SELECT id FROM TABLE_2 t2 WHERE t2.id = t1.id);</code>

Pertanyaan ini menghalang sisipan pendua dengan menyemak sama ada ID yang sepadan wujud dalam TABLE_2. Jika sudah wujud, langkau baris ini.

Kaedah 2: Gunakan NOT IN

<code class="language-sql">INSERT INTO TABLE_2 (id, name)
SELECT t1.id, t1.name
FROM TABLE_1 t1
WHERE t1.id NOT IN (SELECT id FROM TABLE_2);</code>

Serupa dengan NOT EXISTS, klausa NOT IN juga mengecualikan ID yang sudah wujud dalam TABLE_2. Ia menyemak sama ada ID dalam TABLE_1 berada dalam TABLE_2 dan memasukkan hanya jika tiada.

Kaedah 3: Gunakan LEFT JOIN/IS NULL

<code class="language-sql">INSERT INTO TABLE_2 (id, name)
SELECT t1.id, t1.name
FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id
WHERE t2.id IS NULL;</code>

Gunakan LEFT JOIN dan IS NULL untuk mengenal pasti dengan lebih jelas baris yang perlu disisipkan. Pertanyaan ini memilih dan memasukkan semua baris dalam TABLE_1 yang tidak mempunyai ID yang sepadan dalam TABLE_2.

Perbandingan prestasi

Dari segi prestasi, LEFT JOIN/IS NULL secara amnya tidak secekap NOT EXISTS dan NOT IN. Ini kerana LEFT JOIN memerlukan pengimbasan lebih banyak jadual dan baris serta menggunakan lebih banyak sumber. Untuk set data yang besar, disyorkan untuk menggunakan NOT EXISTS atau NOT IN.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Baris Pendua dalam SQL Server INSERT INTO SELECT Tanpa Pernyataan IF-ELSE?. 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