java - Oracle SQL 偏移行数

标签 java sql oracle offset

我正在尝试创建一个变量,它可以帮助我定位检查点行,然后查询该检查点之后的行。

一开始我想使用ROWID,但由于ROWID的形式是非整数。好像有点不太合适。

无论如何,一个必需的过程是创建一个在 Oracle 中不方便支持的行偏移:

我不断得到

ORA-00904: "ITEM"."ID": invalid identifier

该变量是 Item_ID,它是表 ITEM 中的 ID 列。

select ITEM.ID,ITEM.CREATEDDATE,ITEM.TYPEID,
        CAT_DIC_AUTHOR.DISPLAYENTRY,
        CAT_DIC_PUBLISHER.DISPLAYENTRY,
        CAT_DIC_KEYWORD.ACCESSENTRY,CAT_DIC_KEYWORD.DISPLAYENTRY,
        CAT_DIC_LANGUAGE.DISPLAYENTRY,CAT_DIC_LANGUAGE.NAMEVIET,
        CAT_DIC_SH.DISPLAYENTRY,
        CAT_DIC_ITEM_TYPE.ACCESSENTRY,CAT_DIC_ITEM_TYPE.TYPENAME 
from ( select rownum r,ITEM.ID from ITEM) 

LEFT JOIN ITEM_AUTHOR 
    ON ITEM.ID=ITEM_AUTHOR.ITEMID 
LEFT JOIN CAT_DIC_AUTHOR 
    ON ITEM_AUTHOR.AUTHORID=CAT_DIC_AUTHOR.ID 
LEFT JOIN ITEM_PUBLISHER 
    ON ITEM.ID=ITEM_PUBLISHER.ITEMID 
LEFT JOIN CAT_DIC_PUBLISHER 
    ON ITEM_PUBLISHER.PUBLISHERID=CAT_DIC_PUBLISHER.ID 
LEFT JOIN ITEM_KEYWORD 
    ON ITEM.ID=ITEM_KEYWORD.ITEMID 
LEFT JOIN CAT_DIC_KEYWORD 
    ON ITEM_KEYWORD.KEYWORDID=CAT_DIC_KEYWORD.ID 
LEFT JOIN ITEM_LANGUAGE 
    ON ITEM.ID=ITEM_LANGUAGE.ITEMID 
LEFT JOIN CAT_DIC_LANGUAGE 
    ON ITEM_LANGUAGE.LANGUAGEID=CAT_DIC_LANGUAGE.ID 
LEFT JOIN ITEM_SH 
    ON ITEM.ID=ITEM_SH.ITEMID 
LEFT JOIN CAT_DIC_SH 
    ON ITEM_SH.SHID=CAT_DIC_SH.ID 
LEFT JOIN CAT_DIC_ITEM_TYPE 
    ON ITEM.TYPEID=CAT_DIC_ITEM_TYPE.ID 

where r>100 and r<=200

最佳答案

尝试在子查询后添加 ITEM 单词,如下所示:

select ITEM.ID,ITEM.CREATEDDATE,ITEM.TYPEID,
        CAT_DIC_AUTHOR.DISPLAYENTRY,
        CAT_DIC_PUBLISHER.DISPLAYENTRY,
        CAT_DIC_KEYWORD.ACCESSENTRY,CAT_DIC_KEYWORD.DISPLAYENTRY,
        CAT_DIC_LANGUAGE.DISPLAYENTRY,CAT_DIC_LANGUAGE.NAMEVIET,
        CAT_DIC_SH.DISPLAYENTRY,
        CAT_DIC_ITEM_TYPE.ACCESSENTRY,CAT_DIC_ITEM_TYPE.TYPENAME 
from ( select rownum r,ITEM.ID,ITEM.TYPEID, ITEM.CREATEDDATE from ITEM)  ITEM

LEFT JOIN ITEM_AUTHOR 
    ON ITEM.ID=ITEM_AUTHOR.ITEMID 
LEFT JOIN CAT_DIC_AUTHOR 
    ON ITEM_AUTHOR.AUTHORID=CAT_DIC_AUTHOR.ID 
LEFT JOIN ITEM_PUBLISHER 
    ON ITEM.ID=ITEM_PUBLISHER.ITEMID 
LEFT JOIN CAT_DIC_PUBLISHER 
    ON ITEM_PUBLISHER.PUBLISHERID=CAT_DIC_PUBLISHER.ID 
LEFT JOIN ITEM_KEYWORD 
    ON ITEM.ID=ITEM_KEYWORD.ITEMID 
LEFT JOIN CAT_DIC_KEYWORD 
    ON ITEM_KEYWORD.KEYWORDID=CAT_DIC_KEYWORD.ID 
LEFT JOIN ITEM_LANGUAGE 
    ON ITEM.ID=ITEM_LANGUAGE.ITEMID 
LEFT JOIN CAT_DIC_LANGUAGE 
    ON ITEM_LANGUAGE.LANGUAGEID=CAT_DIC_LANGUAGE.ID 
LEFT JOIN ITEM_SH 
    ON ITEM.ID=ITEM_SH.ITEMID 
LEFT JOIN CAT_DIC_SH 
    ON ITEM_SH.SHID=CAT_DIC_SH.ID 
LEFT JOIN CAT_DIC_ITEM_TYPE 
    ON ITEM.TYPEID=CAT_DIC_ITEM_TYPE.ID 
where r>100 and r<=200

关于java - Oracle SQL 偏移行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13873162/

相关文章:

java - 与Java的LinkedList类的并发

java - Hibernate 查询以选择 Datetime 列的时间范围内的行

sql - 如何在 PL/SQL 中执行字符串连接?

mysql - 从另一个表复制记录并设置限制

oracle - dblink 上的同义词或 View

java - Spring boot 应用程序错误日志显示尝试在 FanManager 中配置 ONS 失败,并出现 oracle.ons.NoServersAvailable

oracle - 如何在 Oracle 中处理闰秒

java - 在 HTML 标签中使用 Struts 标签来隐藏/显示表格

java - 列表过滤: recreate from empty list,或复制并删除元素?

mysql - 选择最近添加的行