Penggunaan gabungan UNION dan ORDER BY dalam pertanyaan MySQL untuk mencapai pengumpulan hasil tersusun
Dalam MySQL, kami boleh menggabungkan berbilang pertanyaan menggunakan pengendali UNION untuk menggabungkan keputusannya. Apabila memproses pertanyaan sedemikian, adalah berfaedah untuk mengisih hasil gabungan dengan cara tertentu.
Andaikan anda ingin mengekstrak jenis rekod yang berbeza daripada satu jadual berdasarkan jarak dari lokasi. Katakan anda mempunyai tiga pertanyaan berikut:
<code class="language-sql">SELECT id, add_date FROM Table WHERE distance = 0; SELECT id, add_date FROM Table WHERE distance < 5; SELECT id, add_date FROM Table WHERE distance BETWEEN 5 AND 15;</code>
Selepas menggabungkan pertanyaan ini menggunakan UNION, anda mungkin mahu mengisih hasil di bawah setiap tajuk, seperti "Hasil tepat", "Hasil dalam jarak 5 kilometer", dsb.
Untuk melakukan ini, kita boleh menggunakan lajur pseudo yang dipanggil "Kedudukan" untuk setiap pernyataan SELECT. Lajur ini akan mengandungi kedudukan setiap rekod dalam kumpulan khususnya supaya kami boleh mengisih mengikutnya sebelum menggunakan sebarang kriteria pengisihan lain.
Berikut ialah contoh cara untuk mencapai ini:
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM Table WHERE distance = 0 UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < 5 UNION ALL SELECT 3 AS Rank, id, add_date FROM Table WHERE distance BETWEEN 5 AND 15 ) AS combined_results ORDER BY Rank, id, add_date;</code>
Dalam pertanyaan ini, hasil carian akan diisih terlebih dahulu mengikut lajur "Kedudukan", yang akan mengumpulkan rekod berdasarkan jenis carian (Tepat, Dalam 5 km atau Dalam 5-15 km). Dalam setiap kumpulan, rekod akan diisih mengikut "id" dan "add_date".
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Hasil Pertanyaan MySQL Gabungan daripada UNION Menggunakan Lajur Kedudukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!