使用“限制”查询不返回结果[重复]
Posted
技术标签:
【中文标题】使用“限制”查询不返回结果[重复]【英文标题】:Query with "limit" not returning results [duplicate] 【发布时间】:2013-03-05 12:24:21 【问题描述】:这是我的查询:
select *
from (SELECT "MYTABLE".* FROM "MYTABLE" ORDER BY "COMPANY" ASC, "SURNAME" ASC)
where ROWNUM between 0 and 20
按预期工作,但是当我尝试获取接下来的 20 条记录时:
select *
from (SELECT "MYTABLE".* FROM "MYTABLE" ORDER BY "COMPANY" ASC, "SURNAME" ASC)
where ROWNUM between 20 and 40
结果集为空?为什么会这样?我该怎么做才能获得接下来的 20 条记录?
【问题讨论】:
你确定20之后有结果吗?如果您的结果介于 0 到 40 之间,您会得到 40 个结果吗? 因为你没有正确使用ROWNUM:oracle.com/technetwork/issue-archive/2006/06-sep/… 是的,返回40条结果 【参考方案1】:您必须嵌套 rownum ,因为 rownum 仅在获取行后才会增加。所以说rownum > 1
永远不会返回一行。
例如
select *
from (select a.*, rownum r
from (select mytable.*
from mytable
order by company asc, surname asc) a
where rownum <= 40
)
where r >= 20
order by r;
或者你可以使用row_number()
分析
select *
from (select mytable.*, row_number() over (order by company asc, surname asc) rn
from mytable)
where rn between 20 and 40
order by rn;
【讨论】:
以上是关于使用“限制”查询不返回结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章
LINQ 和 SQL 中看似等效的查询返回不同的结果 [重复]
sqlalchemy 限制从第一次连接返回的结果,并让后续连接只连接有限的结果