SQL: SyntaxError: order by with row_number() function

SQL: SyntaxError: order by with row_number() function

我有以下 table Employee:

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 150    |
| 2  | 290    |
| 3  | 302    |
+----+--------+

我正在使用以下代码查找第二高的薪水:

with t as 
(
    select 
        Salary, 
        row_number() over (order by Salary desc) as salary_ord 
    from 
        Employee
)
select Salary 
from t 
where salary_ord == 2

但是,我得到一个错误:

SyntaxError: near 't as (
select Salary, row_number() over (order by Salary desc) as salary_ord'

我这里做错了什么?谢谢!

在SQL中,正确的比较运算符是=,而不是==。所以,这是您查询的 ANSI SQL 版本:

with t as (
      select Salary, row_number() over (order by Salary desc) as salary_ord 
      from Employee
     )
select Salary
from t
where salary_ord = 2;

但是,您的错误表明您的数据库不支持 with 或 window 函数。

在SQL服务器中,

你可以这样做:

select top 1 Salary 
from Employee 
order by Salary desc
offset 1 row fetch next 1 row only