当数据来自多个select并将其合并在一起时,是否可以进行排序?比如
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
如何按名称对此查询进行排序?
我试过了
Select id,name,age
From Student
Where age < 15 or name like "%a%"
Order by name
但这并不管用。
发布于 2011-01-18 01:15:34
只需写
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将应用于完整的结果集
发布于 2011-01-18 01:13:31
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
发布于 2017-05-09 03:10:00
为了使排序只应用于UNION
中的第一条语句,您可以将它放在带有UNION ALL
的子选择中(在Oracle中,这两种操作似乎都是必需的):
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
上面,如下所示:
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
https://stackoverflow.com/questions/4715820
复制相似问题