Dalam bidang SQL, pengendali UNION ALL menggabungkan berbilang set hasil sambil mengekalkan baris pendua. Walau bagaimanapun, pengendali ini tidak menjamin susunan data yang terhasil. Artikel ini meneroka sama ada mungkin untuk memastikan set keputusan sentiasa mengikut perintah tertentu dan menyediakan penyelesaian untuk mencapainya.
Jawapannya adalah tidak. Tanpa arahan yang jelas, UNION ALL tidak akan memesan data yang terhasil dalam urutan yang telah ditetapkan. Susunan baris dalam hasil akhir bergantung pada susunan pernyataan SELECT individu dilaksanakan, yang boleh berbeza-beza bergantung pada faktor seperti beban kerja pelayan dan teknik pengoptimuman pangkalan data.
Pertimbangkan contoh berikut:
SELECT 'O'; UNION ALL SELECT 'R'; UNION ALL SELECT 'D'; UNION ALL SELECT 'E'; UNION ALL SELECT 'R';
Tiada cara untuk menentukan susunan keputusan yang ditetapkan dalam ini senario. Baris boleh dikembalikan dalam sebarang susunan, seperti 'E-R-O-D-R' atau 'O-E-D-R-R'.
Untuk mengekalkan susunan tertentu dalam set hasil, anda mesti nyatakan secara eksplisit urutan yang dikehendaki menggunakan klausa ORDER BY. Sebagai contoh, dalam contoh kami, kami boleh menambah lajur SortOrder pada setiap pernyataan SELECT, memastikan rekod muncul dalam susunan yang diingini:
SELECT 'O', 1 AS 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 pengubahsuaian ini, set hasil akan sentiasa diisih mengikut Lajur SortOrder, menjamin bahawa pesanan itu sentiasa 'O-R-D-E-R'.
UNION ALL tidak menjamin susunan keputusan yang ditetapkan. Walau bagaimanapun, dengan menyatakan secara eksplisit susunan yang dikehendaki menggunakan ORDER BY, anda boleh memastikan bahawa baris dikembalikan dalam urutan yang betul. Teknik mudah tetapi berkesan ini penting untuk memastikan ketekalan data dan memenuhi keperluan pesanan khusus.
Atas ialah kandungan terperinci Adakah UNION ALL Mengekalkan Perintah Keputusan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!