Jaminan Pesanan dalam UNION ALL Pertanyaan
Dalam sistem pangkalan data, pengendali UNION ALL menggabungkan hasil berbilang pertanyaan ke dalam set hasil tunggal. Walau bagaimanapun, adalah penting untuk memahami sama ada UNION ALL menjamin susunan set keputusan.
Pertimbangkan contoh berikut:
SELECT 'O' UNION ALL SELECT 'R' UNION ALL SELECT 'D' UNION ALL SELECT 'E' UNION ALL SELECT 'R'
Timbul persoalan, adakah set keputusan sentiasa diisih sebagai " O-R-D-E-R"? Jawapannya adalah tidak, tiada susunan yang wujud yang dijamin oleh UNION ALL.
Untuk membuktikan ini, pertimbangkan senario di mana enjin pangkalan data secara dalaman melaksanakan pertanyaan seperti berikut:
Dalam kes ini, set hasil akan muncul sebagai "O-D-R-E-R", yang berbeza daripada pesanan yang dijangkakan.
Untuk memastikan pesanan tertentu, adalah perlu untuk memasukkan klausa ORDER BY dalam pertanyaan. Contohnya:
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
Dengan menambahkan medan SortOrder dan menyertakan klausa ORDER BY, anda secara eksplisit menyatakan susunan yang hasilnya harus dipaparkan.
Atas ialah kandungan terperinci Adakah UNION ALL Jaminan Keputusan Menetapkan Pesanan dalam Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!