【问题标题】:Oracle SQL : FROM keyword not found where expectedOracle SQL:在预期的地方找不到 FROM 关键字
【发布时间】:2018-11-11 20:14:05
【问题描述】:

我的查询如下。

WITH CTE AS
(
    SELECT EmpID, EmpName, EmpSalary,
           RN = ROW_NUMBER() OVER (ORDER BY EmpSalary DESC)
    FROM dbo.Salary
)
SELECT EmpID, EmpName, EmpSalary
FROM CTE
WHERE RN = @8thRow

我收到错误

错误报告 - SQL 错误:ORA-00923:FROM 关键字未在预期位置找到 00923. 00000 - “在预期的地方找不到 FROM 关键字”。

有人能解释一下代码有什么问题吗?

【问题讨论】:

  • 我认为您遗漏了一些代码,请您包括代码的初始部分,因为很难了解您的查询是什么
  • 您不能像在 Oracle 中那样分配变量 RN = ...

标签: sql oracle


【解决方案1】:

语法错误;基于 Scott 架构的示例:

SQL> select ename, sal from emp order by sal;

ENAME             SAL
---------- ----------
SMITH             920
JAMES             950
ADAMS            1100
WARD             1250
MARTIN           1250
MILLER           1300
TURNER           1500    -- 8th  --> you need this one
ALLEN            1600
CLARK            2450
BLAKE            2850
JONES            2975    -- ...
SCOTT            3000    -- 3rd
FORD             3000    -- 2nd
KING            10000    -- 1st, when sort is DESCending

14 rows selected.

SQL> with cte as
  2    (select empno, ename, sal,
  3       row_number() over (order by sal desc) rn
  4     from emp
  5    )
  6  select empno, ename, sal
  7  from cte
  8  where rn = 8;

     EMPNO ENAME             SAL
---------- ---------- ----------
      7844 TURNER           1500

SQL>

【讨论】:

  • 确切地说你不能设置Rn=你需要像上面那样替换因为=在sql中意味着检查一个不赋值的条件有:=运算符用于为变量赋值可以试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多