Menguasai Hasil Isih dengan MySQL UNION dan ORDER BY
Menggabungkan data daripada berbilang SELECT
pernyataan menggunakan UNION
MySQL adalah berkuasa, tetapi mengekalkan pengisihan bahagian individu boleh menjadi rumit. Panduan ini menunjukkan cara mengisih hasil dalam setiap bahagian berdasarkan lajur tertentu (seperti 'id' atau 'add_date') sambil mengekalkan pengumpulan logik pertanyaan UNION
anda.
Senario anda melibatkan mendapatkan semula data berdasarkan kriteria berbeza daripada satu jadual, kemudian menyatukan keputusan menggunakan UNION
di bawah tajuk yang berbeza. Inilah penyelesaiannya:
Perkenalkan lajur "kedudukan" (lajur pseudo) pada setiap pernyataan SELECT
. Nilai berangka ini menentukan susunan paparan dalam setiap bahagian.
<code class="language-sql">SELECT 1 AS Rank, id, add_date FROM Table UNION ALL SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < ...</code>
Seterusnya, rangkumkan pertanyaan gabungan ini dalam subkueri. Pertanyaan utama kemudiannya menggunakan subkueri ini sebagai sumber datanya, mengisih dahulu mengikut lajur 'Kedudukan' dan kemudian mengikut kriteria pengisihan pilihan anda (cth., 'id' atau 'add_date').
<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 < ... ) AS Subquery ORDER BY Rank, id; -- Or ORDER BY Rank, add_date;</code>
Kaedah ini memastikan pengisihan tepat dalam setiap bahagian yang ditakrifkan oleh operasi UNION
anda, menyediakan set hasil yang bersih dan teratur.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Keputusan Dalam Setiap Bahagian Apabila Menggunakan UNION dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!