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
我有以下 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