Rumah >pangkalan data >tutorial mysql >Bagaimana Saya Boleh Isih Keputusan MySQL UNION mengikut Kumpulan Menggunakan ORDER BY?
Pengendali UNION
MySQL menggabungkan hasil daripada berbilang pernyataan SELECT
. Walau bagaimanapun, memesan hasil gabungan ini boleh menjadi rumit, terutamanya apabila anda perlu mengisih dalam setiap kumpulan individu. Panduan ini menunjukkan kaedah bijak menggunakan pseudo-lajur untuk mencapai matlamat ini.
Penyelesaian melibatkan langkah berikut:
Perkenalkan Pseudo-Column: Tambahkan lajur (kami akan memanggilnya 'Kedudukan') pada setiap pernyataan SELECT
individu anda. Lajur ini bertindak sebagai pengecam kumpulan, memberikan nilai unik kepada setiap kumpulan.
Bina UNION
: Gabungkan penyataan SELECT
anda yang diubah suai menggunakan UNION ALL
(atau UNION
jika anda perlu mengalih keluar pendua).
Pesan dengan Pertanyaan Luar: Balut UNION
anda dalam pernyataan SELECT
luar. Gunakan lajur 'Kedudukan' sebagai kriteria pengisihan utama dalam fasal ORDER BY
pertanyaan luar ini.
Perhalusi Isih: Selepas mengisih mengikut 'Kedudukan' (kumpulan), tambah kriteria pengisihan sekunder anda (cth., 'id' atau 'add_date') untuk menyusun lagi keputusan dalam setiap kumpulan.
Contoh Ilustrasi:
Katakan anda mempunyai jadual bernama 'jadual' dengan lajur 'id' dan 'add_date'. Pertanyaan berikut menunjukkan teknik:
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM table UNION ALL SELECT 2 AS Rank, id, add_date FROM table WHERE distance < 10 -- Example condition for a group ) AS combined_results ORDER BY Rank, id, add_date;</code>
Pertanyaan ini menambah lajur 'Kedudukan' (1 untuk kumpulan pertama, 2 untuk kedua), kemudian menggunakan SELECT
luar untuk mengisih dahulu mengikut 'Kedudukan' (menghimpunkan hasil) dan kemudian dengan 'id' dan 'add_date' dalam setiap kumpulan. Ini memastikan susunan yang betul dalam setiap subset data yang dijana oleh pernyataan SELECT
individu. Ingat untuk menggantikan table
dan syarat dalam subkueri dengan jadual sebenar anda dan logik penapisan.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Isih Keputusan MySQL UNION mengikut Kumpulan Menggunakan ORDER BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!