【问题标题】:Error in Join query with pagination for Oracle 10gOracle 10g 分页连接查询出错
【发布时间】:2017-10-18 01:01:39
【问题描述】:

我在 SqlDeveloper 中针对 Oracle 10g 中的数据库执行此查询:

select P1.FIELD1, P1.COD from 
(select P1.FIELD1, P1.COD, row_number() 
over (order by P1.FIELD1) r from 
SCHEMA1.P2 
INNER JOIN SCHEMA1.P1 on SCHEMA1.P1.COD=P2.FIELD2) 
where P1.FIELD_11 = 'VALUE1' and r between 6 and 10;

甲骨文返回:

Error SQL: ORA-00904: "P1"."FIELD_11": invalid identifier

我试过了:

select SCHEMA1.P1.FIELD1, SCHEMA1.P1.COD from 
(select SCHEMA1.P1.FIELD1, SCHEMA1.P1.COD, row_number() 
over (order by SCHEMA1.P1.FIELD1) r from 
SCHEMA1.P2 
INNER JOIN SCHEMA1.P1 on SCHEMA1.P1.COD=SCHEMA1.P2.FIELD2) 
where SCHEMA1.P1.FIELD_11 = 'VALUE1' and r between 6 and 10;

我得到了同样的错误:

ORA-00904: "SCHEMA1"."P1"."FIELD_11": invalid identifier

我在 Oracle 10g 中找不到带有内部连接和分页的选择子句示例,所以我不知道自己做错了什么。

【问题讨论】:

    标签: sql oracle pagination oracle10g


    【解决方案1】:

    你用别名弄乱了查询,这使它变得混乱。使用较短的别名而不是整个 schema.table.column 到处

    SELECT p.field1,
           p.cod
    FROM   (SELECT p1.field1,
                   p1.cod,
               p1.field_11,
                   row_number()
                     over (
                       ORDER BY p1.field1) r
            FROM   schema1.p2 p2
                   inner join schema1.p1 p1
                           ON p1.cod = p2.field2) p
    WHERE  p.field_11 = 'VALUE1'
           AND r BETWEEN 6 AND 10;  
    

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2013-10-31
      相关资源
      最近更新 更多