【问题标题】:Pagination custom query fetch first N rows error [duplicate]分页自定义查询获取前N行错误[重复]
【发布时间】:2020-06-27 17:54:11
【问题描述】:

我在 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 pagination oracle10g sql-limit


    【解决方案1】:

    FETCH FIRST N ROWS 是 Oracle 12c 及更高版本支持的新 SQL 语法。 Oracle 10g(你标记的)不支持这个,你必须使用类似的东西

    WHERE ROWNUM < 6
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      相关资源
      最近更新 更多