用于从SQL Server中的表中检索前两行的查询

用于从SQL Server中的表中检索前两行的查询,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个名为Employee的表,其中包含以下字段: 埃皮德 薪水 名称 我想得到薪水最高的前两名员工。如何编写此查询?试试这个 SELECT * from Employee order by Salary desc limit 2 ; 按薪资描述从员工订单中选择前2个* SQL Server 2000+: SELECT TOP 2 e.* FROM EMPLOYEE e ORDER BY e.salary DESC MySQL和Postgres: SE

我有一个名为Employee的表,其中包含以下字段:

埃皮德 薪水 名称 我想得到薪水最高的前两名员工。如何编写此查询?

试试这个

SELECT * from Employee  order by Salary  desc limit 2 ;

按薪资描述从员工订单中选择前2个*

SQL Server 2000+:

  SELECT TOP 2
         e.*
    FROM EMPLOYEE e
ORDER BY e.salary DESC
MySQL和Postgres:

  SELECT e.*
    FROM EMPLOYEE e
ORDER BY e.salary DESC
   LIMIT 2
甲骨文:

SELECT x.*
  FROM (SELECT e.*,
               ROWNUM as rn
          FROM EMPLOYEE e
      ORDER BY e.salary DESC) x
 WHERE x.rn <= 2

你应该这样写

按薪资从员工订单中选择前2名EmpID、Salary和Name,这是另一个解决方案:

With NumberedItems As
    (
    Select EmpId, Salary, Name
        , Row_Number() Over ( Order By Salary Desc ) As SalaryRank 
    From Employee
    )
Select EmpId, Salary, Name
From NumberedItems
Where SalaryRank <= 2

或者,如果使用SqlServer,则从员工订单中选择前2*。行号CTE也是SQL Server 2005+,尽管从技术上讲OP没有指定SQL的版本。从技术上讲,它可能是SQL Server 4.2,其中不存在TOP命令;