首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL中使用union进行排序?

如何在SQL中使用union进行排序?
EN

Stack Overflow用户
提问于 2011-01-18 01:09:02
回答 10查看 441.6K关注 0票数 233

当数据来自多个select并将其合并在一起时,是否可以进行排序?比如

代码语言:javascript
复制
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"

如何按名称对此查询进行排序?

我试过了

代码语言:javascript
复制
Select id,name,age
From Student
Where age < 15 or name like "%a%"
Order by name

但这并不管用。

EN

回答 10

Stack Overflow用户

发布于 2011-01-18 01:15:34

只需写

代码语言:javascript
复制
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Order by name

order by将应用于完整的结果集

票数 313
EN

Stack Overflow用户

发布于 2011-01-18 01:13:31

代码语言:javascript
复制
Select id,name,age
from
(
   Select id,name,age
   From Student
   Where age < 15
  Union
   Select id,name,age
   From Student
   Where Name like "%a%"
) results
order by name
票数 92
EN

Stack Overflow用户

发布于 2017-05-09 03:10:00

为了使排序只应用于UNION中的第一条语句,您可以将它放在带有UNION ALL的子选择中(在Oracle中,这两种操作似乎都是必需的):

代码语言:javascript
复制
Select id,name,age FROM 
(    
 Select id,name,age
 From Student
 Where age < 15
 Order by name
)
UNION ALL
Select id,name,age
From Student
Where Name like "%a%"

或者(处理Nicholas Carey的评论)你可以保证顶部的SELECT是有序的,结果会出现在底部的SELECT上面,如下所示:

代码语言:javascript
复制
Select id,name,age, 1 as rowOrder
From Student
Where age < 15
UNION
Select id,name,age, 2 as rowOrder
From Student
Where Name like "%a%"
Order by rowOrder, name
票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4715820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档