select (select * from (select * from dual a where a.dummy = b.dummy)) t
from dual b
这样b表的值 是传到子查询里的,
所以问问满足我的需求有什么其他的好办法吗
...全文
101223打赏收藏
求两层套嵌值传递的写法
需求:找某个表的里按时间排序最大时间前每五条记录的值 全量找 时候,效率太低,数据有好多年的沉淀。 所以我想在SELECT里直接取,但需要用到两层套嵌, 如 select (select * from (select * from dual a where a.dummy = b.dummy)) t from dual b 这样b表的值 是传到子查询里的, 所以问问满足我的需求有什么其他的好办法吗
这样改写试试(col_代码,col_日期 上复合索引):
--原代码基本结构:
select *
from (select row_number() over(partition by col_代码 order by col_日期) rn,
a.*
from tab a)
where rn = 5;
--改写:
select *
from tab a,
(select rid
from (select row_number() over(partition by col_代码 order by col_日期) rn,
rowid rid
from tab a)
where rn = 5) b
where a.rowid = b.rid;