SQL查询完整扫描两次时出现问题?
表 A
ID EmpNo Grade
--------------------
1 100 HIGH
2 105 LOW
3 100 MEDIUM
4 100 LOW
5 105 LOW
查询:
select *
from A
where EMPNO = 100
and rownum <= 2
order by ID desc
我尝试使用此查询来检索 max 和 max-1 值;我需要比较 max 和 max-1 的等级,如果等于,我需要将标志设置为“Y”或“N”而不使用光标。我也不想将整个记录扫描两次。
请帮我。
Table A
ID EmpNo Grade
--------------------
1 100 HIGH
2 105 LOW
3 100 MEDIUM
4 100 LOW
5 105 LOW
Query:
select *
from A
where EMPNO = 100
and rownum <= 2
order by ID desc
I tried this query to retrieve max and max-1 value; I need to compare the grade from max and max-1, if equals I need to set the flag as 'Y' or 'N' without using a cursor. Also I don't want to scan the entire record twice.
Please help me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ROWNUM 在 ORDER BY 之前应用,因此您需要像这样嵌套查询:
只执行一次表扫描(或者可能使用 EMPNO 上的索引)。
ROWNUM is applied before ORDER BY, so you need to nest the query like this:
That only performs one table scan (or it may use an index on EMPNO).