2

我有一个 sql 语句,它应该选择按行号排序的表的所有内容。所以我使用了 row_number 函数。

但我每次都得到错误

Exception in thread "main" java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected

或者这个错误

ORA-00936: missing expression

我的陈述如下所示:

SELECT row_number() OVER(ORDER BY table.column1) AS row, table.* 
FROM table 
WHERE column2= ("Any String") 
ORDER BY row;

我希望你能帮助我处理这段代码。

谢谢

4

3 回答 3

6

如果您尝试使用该row结果列的名称,则会遇到问题,因为它是 Oracle 中的保留字。为列选择不同的名称,或者用引号将其""括起来(带引号的标识符

SELECT row_number() OVER(ORDER BY table.column1) AS "row", table.* 
FROM table 
WHERE column2= ("Any String") 
ORDER BY "row";

(不过我通常会选择一个不同的名字)

于 2013-10-11T08:42:44.877 回答
0

我不是专家,但也许你必须选择使用它们的列,试试 syh 像这样:

SELECT name_column1, name_column2, ROW_NUMBER()
OVER( ORDER BY name_column1) AS THE_NAME_THAT_YOU_WANT
FROM NAME_OF_TABLE
WHERE name_column2 ="any_string";

看看错误的根源:

ORA-00923 源于关键字 FROM 必须跟在 SELECT 语句中的最终选定项或 REVOKE 语句中的特权之后。当 ORA-00923 被抛出时,这是因为 SELECT 或 REVOKE 语句在关键字 FROM 中有以下有问题的语法之一:

  1. 失踪
  2. 拼写错误
  3. 错位

解决 ORA-00923 时有许多关注领域:

您应该适当地更正语法,在必要时插入关键字 FROM。请记住,SELECT 列表本身可能有错误,这也可能导致 ORA-00923 出现。更正 ORA-00923 时也应评估引号,因为引号应包含别名(如果在别名中使用)。另外,请查明您是否使用保留字作为别名。

于 2013-10-11T08:23:02.180 回答
0

那是哪个DBMS?你为什么不去掉括号并像这样使用:

SELECT row_number() OVER(ORDER BY table.column1) AS row, table.* 
FROM table 
WHERE column2 = 'Any String' 
ORDER BY row;
于 2013-10-11T08:23:58.843 回答