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

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

Susan Sarandon
Susan Sarandon原创
2025-01-09 22:33:44684浏览

How to Properly Order Results from a SQL UNION Query?

SQL UNION 查询的排序

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

考虑以下示例:

<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>

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

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

<code class="language-sql">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</code>

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn