Isih hasil pertanyaan UNION dalam MySQL
Apabila menggunakan operator UNION dalam MySQL untuk memproses data daripada berbilang sumber data, hasil pengisihan boleh menimbulkan cabaran, terutamanya apabila keputusan perlu diisih dalam kategori tertentu. Masalah ini biasanya berlaku apabila mengekstrak data daripada satu jadual berdasarkan kriteria yang berbeza (contohnya, penapisan jarak bagi pertanyaan carian).
Huraian Masalah
Dalam senario yang diberikan, tiga pertanyaan berasingan mengekstrak data berdasarkan keadaan jarak yang berbeza:
Kemudian gunakan UNION untuk menggabungkan keputusan ini dan memaparkannya di bawah tajuk yang sesuai (contohnya, "Hasil tepat" dan "Hasil dalam jarak 5 kilometer"). Pengguna ingin mengisih hasil berdasarkan ID atau add_date, tetapi menambah klausa ORDER BY pada akhir pertanyaan gabungan mengisih semua hasil secara keseluruhan, mengabaikan keperluan untuk mengisih mengikut tajuk.
Penyelesaian menggunakan lajur pseudo Kedudukan
Untuk mengisih hasil dalam setiap kategori sambil menggabungkan hasil, anda boleh memperkenalkan lajur pseudo yang dipanggil "Kedudukan" dalam setiap pertanyaan pilihan. Lajur ini akan digunakan untuk mengisih mengikut sebelum mengisih mengikut kriteria sebenar. Kod berikut menggambarkan pendekatan ini:
<code class="language-sql">SELECT * FROM ( SELECT 1 AS Rank, id, add_date FROM Table WHERE <精确匹配条件> 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 CombinedResults ORDER BY Rank, id DESC, add_date DESC;</code>
Dalam pertanyaan ini, lajur pseudo Kedudukan memberikan nilai 1, 2 dan 3 kepada tiga pertanyaan masing-masing. Klausa ORDER BY mengisih keputusan dahulu mengikut Kedudukan, kemudian mengikut ID dan add_date dalam tertib menurun. Pendekatan ini membolehkan anda mengisih hasil dalam setiap tajuk sambil mengekalkan perbezaan kategori.
Sila ambil perhatian bahawa <精确匹配条件>
perlu diganti dengan kriteria carian padanan tepat anda. Penyelesaian ini menganggap jadual anda dinamakan Table
dan mengandungi lajur id
, add_date
dan distance
. Buat pelarasan yang sesuai berdasarkan struktur dan keadaan jadual sebenar anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Keputusan Dalam Kategori Selepas Menggunakan UNION dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!