有如下的select语句:CREATE TABLE
(
    EmployeeID INT PRIMARY KEY IDENTITY(1,1),
    Age INT,
    EmployeeName NVARCHAR(20),
    EmployeeAddress NVARCHAR(200)
)select top 10 from dbo.Employees order by EmployeeName descorder by是在整个Employees表上排序,然后取前十,还是先取前十,然后再给这十个记录排序?

解决方案 »

  1.   

    你在查询分析器里输入语句后按CTRL+L看一下执行计划就明白了
      

  2.   

    先排序,然后取前十个记录
    select top 10 * from dbo.Employees order by EmployeeName desc
      

  3.   

    那是不是如果没有TOP,就是先取,再排序?比如这样:
    SELECT ROW_NUMBER() OVER (ORDER BY EmployeeID) AS RowNo, * INTO #QueryResults FROM dbo.Employees
    select * from #QueryResults where RowNo between 11 and 20 order by EmployeeName desc
    这就是先取RowNo在10~20的,然后再给这10个按照名字逆序排序?
      

  4.   

    呵呵,是在整个Employees表上倒序排序,然后再取前十。
      

  5.   

    执行顺序是先ORDER BY 在TOP