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

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

Susan Sarandon
发布: 2025-01-11 06:03:42
原创
428 人浏览过

How to Properly Order Results from a SQL UNION?

SQL 中的 UNION 和排序

在 SQL 中,UNION 运算符允许我们将多个 SELECT 语句组合成单个结果集。但是,当每个 SELECT 语句可能返回不同的数据时,对组合数据进行排序可能会很棘手。

考虑以下从 Student 表中基于两个条件检索数据的查询:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
UNION
SELECT id, name, age
FROM Student
WHERE Name LIKE "%a%";</code>
登录后复制

我们希望按 name 列对组合结果集进行排序。不幸的是,以下查询无法按预期工作:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
ORDER BY name;</code>
登录后复制

在此查询中,ORDER BY 子句应用于 WHERE 条件的组合结果,而不是 UNION 的完整结果集。因此,数据未排序。

要按 name 对组合结果集进行排序,只需将 ORDER BY 子句移到 UNION 运算符之外:

<code class="language-sql">SELECT id, name, age
FROM Student
WHERE age > 20
UNION
SELECT id, name, age
FROM Student
WHERE Name LIKE "%a%"
ORDER BY name;</code>
登录后复制

在此修改后的查询中,ORDER BY 子句应用于完整的结果集,确保组合数据正确排序。

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

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