Rumah > pangkalan data > tutorial mysql > Apakah Perbezaan Antara UNION SQL dan UNION ALL?

Apakah Perbezaan Antara UNION SQL dan UNION ALL?

Patricia Arquette
Lepaskan: 2025-01-23 11:37:37
asal
841 orang telah melayarinya

What's the Difference Between SQL's UNION and UNION ALL?

Perbezaan antara UNION dan UNION ALL dalam SQL

Kedua-dua pengendali UNION dan UNION ALL dalam SQL digunakan untuk menggabungkan hasil berbilang pertanyaan. Walau bagaimanapun, perbezaan utama antara keduanya ialah cara mereka mengendalikan baris pendua.

UNION: hapuskan baris pendua

UNION digunakan untuk menggabungkan berbilang hasil pertanyaan dan menghapuskan sebarang baris pendua. Ia membandingkan baris berdasarkan nilai lajur dan hanya mengembalikan baris yang berbeza. Ini bermakna jika baris mempunyai nilai yang sama dalam semua lajur, baris itu hanya akan muncul sekali dalam hasil gabungan.

UNION ALL: Simpan semua baris

Sebaliknya, UNION ALL tidak mengalih keluar baris pendua. Ia hanya menggabungkan hasil pertanyaan, termasuk sebarang pendua. Ini berguna apabila anda ingin mengekalkan semua baris daripada pelbagai pertanyaan tanpa mengira sama ada nilai lajurnya sepadan.

Impak prestasi

Menggunakan UNION bukannya UNION ALL menimbulkan overhed prestasi. Ini kerana pangkalan data mesti melakukan kerja tambahan untuk mengenal pasti dan menghapuskan baris pendua. Oleh itu, UNION ALL biasanya lebih pantas daripada UNION, tetapi ia mungkin tidak selalu sesuai apabila pendua perlu dialih keluar.

Contoh: Kenal pasti baris pendua

Untuk menentukan sama ada baris adalah pendua, bukan sahaja baris itu daripada jenis yang sama, tetapi juga mesti serasi. Sistem SQL yang berbeza mungkin mengendalikan keserasian ini secara berbeza. Sebagai contoh, sesetengah sistem mungkin memotong lajur teks panjang untuk perbandingan, manakala sistem lain mungkin menolak perbandingan antara lajur binari.

Demonstrasi UNION:

Contoh berikut menggabungkan dua pertanyaan, setiap satu mengembalikan nilai 'foo' yang sama untuk lajur 'bar':

<code class="language-sql">SELECT 'foo' AS bar
UNION
SELECT 'foo' AS bar</code>
Salin selepas log masuk

Keputusan:

<code>+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)</code>
Salin selepas log masuk

Seperti yang dijangkakan, UNION mengalih keluar baris pendua, menghasilkan hanya satu baris yang mengandungi 'foo'.

UNION ALL Demo:

Sebaliknya, UNION ALL tidak mengalih keluar pendua:

<code class="language-sql">SELECT 'foo' AS bar
UNION ALL
SELECT 'foo' AS bar</code>
Salin selepas log masuk

Keputusan:

<code>+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)</code>
Salin selepas log masuk

Terdapat dua baris dalam hasil gabungan, termasuk pendua.

Atas ialah kandungan terperinci Apakah Perbezaan Antara UNION SQL dan UNION ALL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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