当数据来自多个选择并将它们组合在一起时,是否可以订购.例如
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Run Code Online (Sandbox Code Playgroud)
如何按名称订购此查询.
有人说你可以查询这样的.
Select id,name,age
From Student
Where age < 15 or name like "%a%"
Order by name
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我只是忽略了解决方案.
先感谢您.
ber*_*d_k 250
写吧
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Order by name
Run Code Online (Sandbox Code Playgroud)
order by应用于完整的结果集
Mar*_*son 75
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
Run Code Online (Sandbox Code Playgroud)
BA *_*ber 32
为了使排序仅适用于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%"
Run Code Online (Sandbox Code Playgroud)
或者(解决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
Run Code Online (Sandbox Code Playgroud)
Gen*_* S. 12
其他答案都是正确的,但我认为值得注意的是,我遇到的地方没有意识到你需要别名的命令,并确保两个选择的别名是相同的......所以
select 'foo'
union
select item as `foo`
from myTable
order by `foo`
Run Code Online (Sandbox Code Playgroud)
请注意,我在第一个选择中使用单引号,但在其他选项中使用反引号.
这将为您提供所需的分类.
Sun*_*mar 11
Order By在之后应用union,所以只需order by在语句末尾添加一个子句:
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like '%a%'
Order By name
Run Code Online (Sandbox Code Playgroud)
如果我希望排序只应用于UNION中的一个,如果使用Union all:
Select id,name,age
From Student
Where age < 15
Union all
Select id,name,age
From
(
Select id,name,age
From Student
Where Name like "%a%"
Order by name
)
Run Code Online (Sandbox Code Playgroud)
小智 8
如其他答案所述,LAST Union之后的“排序依据”应适用于通过union联接的两个数据集。
我当时有两个数据集,但是使用不同的表但使用相同的列。LAST Union之后的“订购依据”仍然无效。将ALIAS用于“ order by”中使用的列就可以了。
Select Name, Address for Employee
Union
Select Customer_Name, Address from Customer
order by customer_name; --Won't work
Run Code Online (Sandbox Code Playgroud)
因此解决方案是使用别名“ User_Name”:
Select Name as User_Name, Address for Employee
Union
Select Customer_Name as User_Name, Address from Customer
order by User_Name;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
317136 次 |
| 最近记录: |