我在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不想更改...所以我得到了很多过滤信息
FETCH FIRST N ROWS是Oracle 12c及更高版本支持的新SQL语法。 Oracle 10g(您标记的内容)不支持此功能,您必须使用类似的方法>
WHERE ROWNUM < 6
请使用确切的Oracle数据库版本和实际的错误消息更新您的问题,以便我们可以确定您的问题是什么。