首页 > 数据库 > mysql教程 > 如何正确排序 SQL UNION 查询的结果?

如何正确排序 SQL UNION 查询的结果?

Susan Sarandon
发布: 2025-01-09 22:33:44
原创
765 人浏览过

How to Properly Order Results from a SQL UNION Query?

SQL UNION 查询的排序

在使用 SQL 查询通过 UNION 运算符组合多个表中的数据时,通常需要对结果进行排序。但是,简单地在查询末尾添加 ORDER BY 子句可能会导致错误。

考虑以下示例:

SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1
登录后复制

此查询尝试对 UNION 操作的结果进行排序,但它会引发异常,因为 ORDER BY 子句不允许位于包含各个 SELECT 语句的括号之外。

要正确排序 UNION 查询,需要在每个 SELECT 语句中包含 ORDER BY 子句。这确保了在组合各个数据集之前对它们进行排序。以下是重写上述查询以正确排序结果的方法:

SELECT * FROM
(
  SELECT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1

UNION ALL

SELECT * FROM
(
  SELECT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
登录后复制

通过这种方法,各个数据集在使用 UNION ALL 组合之前会在括号内进行排序。然后,根据最外层 SELECT 语句中 ORDER BY 子句的要求对组合结果进行排序。

以上是如何正确排序 SQL UNION 查询的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板