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的另一个整数时它无法查询任何记录? 这是一个语法问题吗?提前感谢您提供任何帮助。
答案 0 :(得分:1)
ROWNUM
条件的行时,会分配 where
。检索行源的第一行并给出ROWNUM=1
。如果其中一个were
条件为ROWNUM > 1
,则不会选中此行。
然后ROWNUM=1
被重新分配到下一行(这将再次导致where
子句失败),依此类推。这是因为最后ROWNUM
必须从1连续运行,它不会是带有间隙的序列。因此,任何不允许ROWNUM
为1(例如:where mod(ROWNUM, 2) = 0
)的条件都会产生零行,并且出于完全相同的原因。