Oracle SQL查询完全扫描两次时出现问题?
表A 查询:Oracle SQL查询完全扫描两次时出现问题?,oracle,Oracle,表A 查询: select * from A where EMPNO = 100 and rownum <= 2 order by ID desc 我尝试了这个查询来检索max和max-1值;我需要比较max和max-1的等级,如果相等,我需要在不使用光标的情况下将标志设置为“Y”或“N”。另外,我不想扫描整个记录两次 请帮助我。ROWNUM在ORDER BY之前应用,因此您需要像这样嵌套查询: select * from (select * from A where EM
select *
from A
where EMPNO = 100
and rownum <= 2
order by ID desc
我尝试了这个查询来检索max和max-1值;我需要比较max和max-1的等级,如果相等,我需要在不使用光标的情况下将标志设置为“Y”或“N”。另外,我不想扫描整个记录两次
请帮助我。ROWNUM在ORDER BY之前应用,因此您需要像这样嵌套查询:
select * from
(select * from A where EMPNO =100 order by ID desc)
where rownum<=2
它只执行一次表扫描,或者可能使用EMPNO上的索引。如何在此处解码?我需要检查rownum=1和rownum=2的等级,如果相等,我需要“Y”作为o/p或“N”
select *
from (
select id, emp_no, grade
, case
when lag(grade) over (order by emp_no desc) = grade
then 'Y'
else 'N'
end
as flag
, dense_rank() over( order by emp_no desc) as rank
from t
)
where rank <=2
;
select *
from (
select id, emp_no, grade
, case
when lag(grade) over (order by emp_no desc) = grade
then 'Y'
else 'N'
end
as flag
, dense_rank() over( order by emp_no desc) as rank
from t
)
where rank <=2
;