Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Keputusan dengan Betul daripada Pertanyaan SQL UNION?
Apabila menggunakan pertanyaan SQL untuk menggabungkan data daripada berbilang jadual menggunakan operator UNION, anda selalunya perlu mengisih keputusan. Walau bagaimanapun, hanya menambah klausa ORDER BY pada akhir pertanyaan boleh menyebabkan ralat.
Pertimbangkan 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 cuba mengisih hasil operasi UNION, tetapi ia mengeluarkan pengecualian kerana klausa ORDER BY tidak dibenarkan di luar kurungan yang mengelilingi pernyataan SELECT individu.
Untuk memesan pertanyaan UNION dengan betul, anda perlu memasukkan klausa ORDER BY dalam setiap pernyataan SELECT. Ini memastikan bahawa set data individu diisih sebelum ia digabungkan. Begini cara untuk menulis semula pertanyaan di atas untuk menyusun keputusan dengan betul:
<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>
Dengan pendekatan ini, set data individu diisih dalam kurungan sebelum digabungkan menggunakan UNION ALL. Hasil gabungan kemudiannya dipesan mengikut keperluan klausa ORDER BY dalam pernyataan SELECT paling luar.
Atas ialah kandungan terperinci Bagaimana untuk Memesan Keputusan dengan Betul daripada Pertanyaan SQL UNION?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!