当数据来自许多选择和联合在一起时,是否有可能进行排序?如
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
但这并不奏效。
为了添加到旧的主题,我使用了ROW_NUMBER(使用MS SQL)。这允许在union内排序(顺序)。
所以使用来自@BATabNabber的想法来分离联盟的每一半,而@Wodin将整个事情包装在一个选择中,我得到:
Select Id, Name, Age from
(
Select Id, Name, Age, 1 as Mainsort
, ROW_NUMBER() over (order by age) as RowNumber
From Student
Where Age < 15
Union
Select Id, Name, Age, 2 as Mainsort
, ROW_NUMBER() over (Order by Name) as RowNumber
From Student
Where Name like '%a%'
) as x
Order by Mainsort, RowNumber
所以调整,或省略,你想要的顺序,并添加下降,因为你认为合适。