-1

这里有 2 个查询 -

select * --1
from Employee --2
where HireDate < '7/1/2001' --3
order by HireDate --4

--5 gap   

select top(2) * --6
from Employee --7
where HireDate >= '7/1/2001' --8
order by HireDate --9

我想对他们做一个 UNION。当我将 UNION 放入 5 时,为什么会出现错误?

当我删除 4 并将 UNION 放入 5 时,我得到了一个结果,但与我单独执行两个查询时不同。你能告诉我为什么会这样吗?

为了使这项工作正常,我必须删除 4,创建两个查询的派生表,将 4 放在 9 之后,然后对两个派生表执行 UNION。

4

2 回答 2

2

删除ORDER BY之前的UNION. (它会导致语法错误

select *
from Employee 
where HireDate < '7/1/2001' 
UNION
select top(2) * 
from Employee 
where HireDate >= '7/1/2001' 
order by HireDate 

ORDER BY条款发生在UNION

于 2013-01-14T07:23:50.687 回答
1
This will help you I guess for your question

在 SQL Server 中结合 ORDER BY 和 UNION

select first.Id, first.Name 
from (
    select top 1 * 
    from Locations 
    order by Id) first
union all
select last.Id, last.Name 
from (
    select top 1 * 
    from Locations 
    order by Id desc) last
于 2013-01-14T07:27:26.620 回答