Rumah >pangkalan data >tutorial mysql >Adakah `UNION ALL` Mengekalkan Susunan Baris dalam Set Keputusan SQL?

Adakah `UNION ALL` Mengekalkan Susunan Baris dalam Set Keputusan SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-31 00:24:09286semak imbas

Does `UNION ALL` Preserve the Order of Rows in SQL Result Sets?

Adakah UNION ALL Menjamin Pesanan dalam Set Hasil?

Dalam SQL, pengendali UNION ALL menggabungkan hasil penyata SELECT berbilang. Walau bagaimanapun, ia tidak menjamin susunan keputusan. Jika tiada klausa ORDER BY, susunan baris tidak ditentukan dan mungkin berbeza-beza.

Pertimbangkan contoh yang diberikan dalam soalan:

SELECT 'O'
UNION ALL
SELECT 'R'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'R'

Ada kemungkinan keputusan akan dipaparkan dalam susunan "O-R-D-E-R," tetapi tiada jaminan. Pesanan mungkin berbeza bergantung pada faktor seperti enjin pangkalan data, pengedaran data dan pengoptimuman lain.

Untuk menguatkuasakan perintah tertentu, klausa ORDER BY mesti digunakan. Untuk contoh yang diberikan, lajur SortOrder boleh ditambah pada setiap pernyataan SELECT:

SELECT 'O', 1 SortOrder
UNION ALL
SELECT 'R', 2
UNION ALL
SELECT 'D', 3
UNION ALL
SELECT 'E', 4
UNION ALL
SELECT 'R', 5
ORDER BY SortOrder

Pertanyaan ini akan mengisih hasil secara eksplisit dalam susunan "O-R-D-E-R." Sila ambil perhatian bahawa menambah lajur SortOrder hanya perlu jika susunan yang dikehendaki berbeza daripada susunan lalai (yang tidak ditentukan dalam kes ini).

Atas ialah kandungan terperinci Adakah `UNION ALL` Mengekalkan Susunan Baris dalam Set Keputusan SQL?. 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