SQL:语法错误:为了用ROW_NUMBER()函数
问题描述:
我有如下表Employee
:SQL:语法错误:为了用ROW_NUMBER()函数
+----+--------+
| 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
或窗口功能。
答
在SQL Server中,
你可以这样做:
select top 1 Salary
from Employee
order by Salary desc
offset 1 row fetch next 1 row only
您正在使用什么数据库?请适当标记。 –