-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 にすると、結果が得られますが、2 つのクエリを個別に実行した場合とは異なります。なぜこれが起こるのか教えていただけますか?

これを正しく機能させるには、4 を削除し、両方のクエリの派生テーブルを作成し、9 の後に 4 を配置してから、両方の派生テーブルの 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 に答える