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!