分页自定义查询获取前N行错误[重复]

问题描述 投票:0回答:1

我在Oracle 10g中有这样长的查询(需要自定义分页)。

SELECT *
  FROM (
       SELECT FILTERED_ORDERED_RESULTS.*,
              COUNT(1) OVER() TOTAL_RECORDS
         FROM (
              SELECT BASEINFO.*,
                     ROWNUM AS RN
                FROM (
                     SELECT A.ID_LIST            AS ID,
                            A.NAME,
                            A.DATE_CREATE        AS DATECREATE,
                            A.DATE_UPDATE        AS DATEUPDATE,
                            A.USER_ID            AS USERID,
                            A.TYPE,
                            NVL(
                                   B.CNT, 0
                            )        CNT
                       FROM MAP_S_LIST_ARTS                                                           A
                       LEFT JOIN (
                            SELECT ID_LIST,
                                   COUNT(*) CNT
                              FROM MAP_LIST_ARTS
                             GROUP BY ID_LIST
                     )        B ON A.ID_LIST = B.ID_LIST
                      ORDER BY A.ID_LIST DESC
              ) BASEINFO
       ) FILTERED_ORDERED_RESULTS
        ORDER BY CNT DESC
)
 WHERE RN > (:PAGE * 5) AND RN <= (:PAGE + 1) * 5 

现在,我有这种行为...我没有对所有数据进行正确的排序,仅在指定的rn范围内,并且由于某种原因rn不想更改...所以我得到了很多过滤信息

sql oracle oracle10g sql-limit
1个回答
1
投票

FETCH FIRST N ROWS是Oracle 12c及更高版本支持的新SQL语法。 Oracle 10g(您标记的内容)不支持此功能,您必须使用类似的方法>

WHERE ROWNUM < 6

请使用确切的Oracle数据库版本和实际的错误消息更新您的问题,以便我们可以确定您的问题是什么。

© www.soinside.com 2019 - 2024. All rights reserved.