【oracle】想要得到一个与输入顺序相同的结果
【oracle】想要得到一个与输入顺序相同的结果
在Oracle中,输出结果顺序好像是个rowid相同的,也就是经常使用的rownum序列的值,所以可以通过对rownum进行order by来让输出结果和原来一样
举个例子,下面的sql执行一下
with main as(
select rownum seq ,c.*
from CoffeeShop c
)
select t.id,t.drink from(
select a.id,b.drink,rank() over(partition by a.id order by b.seq desc) as tt
from main a,main b where a.seq >= b.seq(+)
and b.drink is not null
) t
WHERE tt = 1
结果出来是这样的,因为其中使用了窗口函数,其中含有order by,所以出来的顺序和最初输入的顺序不一样
那么可以使用对rownum进行order by,也就是sql中的这个seq
with main as(
select rownum seq ,c.*
from CoffeeShop c
)
select t.id,t.drink from(
select a.id,b.drink,rank() over(partition by a.id order by b.seq desc) as tt
from main a,main b where a.seq >= b.seq(+)
and b.drink is not null
order by a.seq--多了这个,对原来的虚列进行排序
) t
WHERE tt = 1
结果就是这样的
您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-03-01 编码技巧之递归【笔记】
2021-03-01 程序设计语言基础入门【笔记】
2021-03-01 数据库相关入门【笔记】
2021-03-01 网络入门相关【笔记】
2021-03-01 操作系统的面试入门相关【笔记】