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

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

Susan Sarandon
Susan Sarandon原創
2025-01-11 11:47:43668瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn