Laksanakan Perintah Oleh
dalam pertanyaan UNIONDalam pengaturcaraan pangkalan data, pertanyaan UNION menggabungkan hasil daripada jadual atau subkueri yang berbeza. Walau bagaimanapun, menggunakan ORDER BY secara langsung dalam pernyataan UNION boleh menyebabkan pengecualian apabila data diekstrak daripada berbilang jadual dan hasilnya perlu diisih. Seperti yang ditunjukkan dalam contoh berikut:
<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>
Pertanyaan ini akan gagal, terutamanya apabila menggunakan enjin pangkalan data MS Access Jet. Penyelesaiannya terletak pada melampirkan setiap subkueri dalam klausa ORDER BY sendiri:
<code class="language-sql">SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) DUMMY_ALIAS2</code>
Pernyataan ORDER BY akan digunakan pada setiap subquery secara individu dengan melampirkan subquery dalam kurungan dan memberikannya alias (DUMMY_ALIAS1 dan DUMMY_ALIAS2). Ini memastikan susunan keputusan gabungan yang betul tanpa menyebabkan ralat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan ORDER BY dengan betul dalam Pertanyaan UNION untuk Mengelakkan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!