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
Lepaskan: 2025-01-13 10:58:43
asal
429 orang telah melayarinya

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

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

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

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!

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