如何在嵌套查询中使用 ROWNUM

How to use ROWNUM with nested queries

SELECT * FROM(
SELECT * FROM(
SELECT PART_NO, SRC_PART_NO, CTNM_ENG, DESCRIPTION, USER_ID, REG_DT, CHG_DT, FLAG,       
(select count(*) from ( SELECT PART_NO, SRC_PART_NO, CTNM_ENG, DESCRIPTION, USER_ID, REG_DT, CHG_DT, FLAG
FROM GM_PART_LIST
WHERE PART_NO LIKE  '%' || '%' AND SRC_PART_NO LIKE  '%' || '%' AND CTNM_ENG LIKE  'BOLT'|| '%'
AND 1 = 1) ) as total_count -- Nested subquery that return total count of record set. plug in same where conditions.
FROM GM_PART_LIST
WHERE PART_NO LIKE  '%' || '%' AND SRC_PART_NO LIKE  '%' || '%' AND CTNM_ENG LIKE  'BOLT'|| '%'
AND 1 = 1
ORDER BY PART_NO ASC))
WHERE ROWNUM BETWEEN 2 AND 202; 

如果我在 1 到 200 之间搜索,上面的查询会怎样?它可以很好地提取记录,但是当我将它切换到 2 或另一个大于 1 的整数时,它无法查询任何记录? 这是语法问题吗?预先感谢您提供任何帮助。

ROWNUM 在为 where 条件评估行时分配。检索行源中的第一行并给出 ROWNUM=1。如果were条件之一为ROWNUM > 1,则不会选择该行。

然后 ROWNUM=1 重新分配 到下一行(这将再次使 where 子句失败)等等。这是因为最终ROWNUM必须从1开始连续运行,不会是有空位的序列。因此,任何不允许 ROWNUM 为 1 的条件(例如:where mod(ROWNUM, 2) = 0)都将产生零行,原因完全相同。