需求:找某个表的里按时间排序最大时间前每五条记录的值 全量找 时候,效率太低,数据有好多年的沉淀。
所以我想在SELECT里直接取,但需要用到两层套嵌,
如
select (select * from (select * from dual a where a.dummy = b.dummy)) t
from dual b
这样b表的值 是传到子查询里的,
所以问问满足我的需求有什么其他的好办法吗
所以我想在SELECT里直接取,但需要用到两层套嵌,
如
select (select * from (select * from dual a where a.dummy = b.dummy)) t
from dual b
这样b表的值 是传到子查询里的,
所以问问满足我的需求有什么其他的好办法吗
解决方案 »
- .net+oracle问题
- oracle自动出现的表
- 在partition分区中使用merge into 的问题,有熟悉的帮忙下
- 执行delete后,kill这个session,undo还不停的涨??
- 在ORACLE中創建的數據庫庫存放在哪個目錄下?
- select 语句如果不写order by?
- 在Oracle中如何定时调用存储过程?
- 怎样将oracle中的某个表以txt的文件导出
- oracle数据库恢复到指定的时间点
- 学习数据库主要精力是放在数据库设计方法的学习上,还是学习具体数据库的操作(欢迎讨论)
- c#读取oracle中blob图像
- windows系统,oracle连接本地服务器,报错“ORA-12523” 监听程序无法找到适用于客户机连接的例程
如果全量用分析函数,太慢了,比直接在SELECT中取慢太多了
可以优化。
【代码】字段的distinct值大概有多少
--原代码基本结构:
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;