使用 MySQL 的 UNION 和 ORDER BY 掌握排序結果
使用 MySQL 的 SELECT
組合來自多個 UNION
語句的資料非常強大,但維護各個部分的排序可能很棘手。 本指南示範如何根據特定欄位(如「id」或「add_date」)對每個部分中的結果進行排序,同時保留 UNION
查詢的邏輯分組。
您的場景涉及根據不同條件從單一表中檢索數據,然後使用 UNION
在不同標題下合併結果。 解決方法如下:
為每個 SELECT
語句引入一個「排名」欄位(偽列)。此數值決定了每個部分內的顯示順序。
<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>
接下來,將此組合查詢封裝在子查詢中。 然後,主查詢使用該子查詢作為其資料來源,首先按「Rank」列排序,然後按您選擇的排序標準(例如「id」或「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>
此方法可確保在 UNION
操作定義的每個部分內進行準確排序,從而提供乾淨且有組織的結果集。
以上是在 MySQL 中使用 UNION 時如何對每個部分內的結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!