使用 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中文网其他相关文章!