首頁 > 資料庫 > mysql教程 > 如何使用排名列對來自 UNION 的合併 MySQL 查詢結果進行排序?

如何使用排名列對來自 UNION 的合併 MySQL 查詢結果進行排序?

Susan Sarandon
發布: 2025-01-11 11:47:43
原創
665 人瀏覽過

How Can I Sort Combined MySQL Query Results from UNION Using a Rank Column?

MySQL 查詢中 UNION 與 ORDER BY 的組合使用,實現排序後的結果分組

在 MySQL 中,我們可以使用 UNION 運算子組合多個查詢以合併其結果。處理此類查詢時,以特定方式對組合結果進行排序可能很有益。

假設您要從單一表格中根據與某個位置的距離提取不同類型的記錄。假設您有以下三個查詢:

<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>
登入後複製

使用 UNION 組合這些查詢後,您可能想要對每個標題下的結果進行排序,例如「精確搜尋結果」、「5 公里內的結果」等等。

為此,我們可以為每個 SELECT 語句使用一個名為「Rank」的偽列。此列將包含其特定分組中每筆記錄的排名,以便我們可以在應用任何其他排序標準之前按其進行排序。

以下是如何實現此目的的範例:

<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>
登入後複製

在此查詢中,結果將首先按「Rank」列排序,這將根據搜尋類型(精確、5 公里以內或 5-15 公里以內)對記錄進行分組。在每個分組中,記錄將按“id”和“add_date”排序。

以上是如何使用排名列對來自 UNION 的合併 MySQL 查詢結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板