我想弄清楚,如果没有使用ROWNUM值分页,是否可以在单个查询中选择查询结果的总数。我的表非常简单,只有这3列(ID,DESCRIPTION,NAME)
select ID, DESCRIPTION, NAME
from ( select ID, DESCRIPTION, NAME, ROWNUM as rnum
from TESTDATAITEM where DESCRIPTION = 'test' and NAME = 'foo'
order by ID )
a where rnum between 0 AND 9 order by rnum
这是我的java后端与myBatis一起运行的查询,以将第一页(10个结果)返回到React UI,而相反,如果不限制“rnum between 0 AND 9”,则结果总数将是数百个。
有没有一种方法可以获得同一查询中的结果总数信息,或者最好的方法是运行另一个查询,而不将结果限制在0到9之间?
我尝试为TOTALRESULTS添加一个count()和一个group by,但它并不像我想象的那样工作
select TOTALRESULTS, ID, DESCRIPTION, NAME
from ( select count(*) as TOTALRESULTS, ID, DESCRIPTION, NAME, ROWNUM as rnum
from TESTDATAITEM where DESCRIPTION = 'TEST' and NAME = 'TEST_NAME'
group by ID, NAME, ROWNUM
order by ID )
a where rnum between 0 AND 9 order by rnum
PS我需要使用ROWNUM,虽然它的丑陋(而不是LIMIT /OFFSET)的原因有一个旧版本的oracle
谢谢
1条答案
按热度按时间8wigbo561#
您可以在整个结果集上使用count的分析版本:
给你(一些虚拟的样本数据):
fiddle