Oracle update和order by
今天遇到一个关于SQL转换成Oracle语句的问题,描述如下:
select * from emp order by deptno;

select * from dept;

Sql Server:
update dept a set dname=(select top 1 ename from emp where deptno=a.deptno order by sal)
经过尝试,查找资料,得出下面转换结果,不知道这样是否可行:
update dept a set dname=
(with t as(select ename,deptno from emp order by sal)
select ename from t where deptno=a.deptno and rownum=1)
where exists(with t as(select ename,deptno from emp order by sal)
select null from t where deptno=a.deptno)
执行结果:
select * from dept;

cost:22
另外一种:
update dept a
set dname =
(select max(ename)
from emp
where deptno = a.deptno
and sal = (select min(sal) from emp where deptno=a.deptno))
where exists (select null
from emp
where deptno = a.deptno);
这种耗cost比第一个更大。
cost:27
第三种:
update dept a
set dname =
(select col
from (select decode(row_number()
over(partition by deptno order by sal),
1,
ename,
null) col,
deptno
from emp) b
where b.deptno = a.deptno
and b.col is not null)
where exists (select null from emp where deptno = a.deptno);
cost:21
已找到较简洁的方法:
update dept a
set dname =
(select max(ename) keep(dense_rank first order by nvl(sal, 0))
from emp
where deptno = a.deptno)
where exists (select null from emp where deptno = a.deptno);
cost:18
Oracle update和order by的更多相关文章
- Oracle Update 语句语法与性能分析 - 多表关联
Oracle Update 语句语法与性能分析 - 多表关联 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create ...
- 在SQL Server中如何进行UPDATE TOP .....ORDER BY?
前言 今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录. SQL SERVER之UPDATE TOP.. ...
- oracle数据库访问order by不起作用分析
`SELECT * FROM student ROWNUM <= 1 ORDER BY id ASC`执行结果,返回结果没有排序.使用驱动"System.Data.OracleClie ...
- oracle update left join 写法
oracle update left join 写法 (修改某列,条件字段在关联表中) 案例: E:考核表 X,:用户表 USERNAME 关联 需求:修改营业部最高分 分析:通过登录账号的营业部OR ...
- Oracle update 多字段更新
一次性update多个字段 以student表为例: -- 创建学生表 create table student ( id number, name varchar2(40), age number, ...
- Oracle update和select 关联
Oracle update和select 关联 目录 Oracle update和select 关联 1.介绍 2.解决方法 2.1.需求 2.2.错误演示 2.3.解决方法 1.介绍 本文主要向大家 ...
- Oracle update 两表及以上关联更新,出现多值情况,不是一对一更新
为了方便起见,建立了以下简单模型,和构造了部分测试数据:在某个业务受理子系统BSS中, SQL 代码--客户资料表 create table customers ( customer_id numbe ...
- Oracle Update
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通 ...
- [转]oracle update set select from 关联更新
本文转自:http://blog.csdn.net/disiwei1012/article/details/52589181 http://www.blogjava.net/Jhonney/archi ...
随机推荐
- Running Dubbo On Spring Boot
Dubbo(http://dubbo.io/) 是阿里的开源的一款分布式服务框架.而Spring Boot则是Spring社区这两年致力于打造的简化Java配置的微服务框架. 利用他们各自优势,配置到 ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...
- 搭建自己的Nuget服务器
序言 你们公司有没有好多项目,有没有好多类库,你们的类库是在tfs中管理,还是svn或者github,又或者是各自为政版本类库随意使用? 那么你们使用者写类库的时候方便吗? 有没有更新下载,版本不一致 ...
- h5应用缓存及收藏时Icon显示
h5应用实现离线缓存,加载后,断网仍然可以继续使用. 一.需求 转行做h5,目前做赛道游戏,动手做了个赛道编辑器web版的,由于web版需要开启服务器才能使用,策划要想回家使用就要发布到外网服务器了, ...
- 《你不知道的JavaScript》整理(二)——this
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,这次研究了一下“this”. 当一个函数被调用时,会创建一个活动记录(执行上下文). 这个记录会包含函 ...
- 学习SpringMVC——你们要的REST风格的CRUD来了
来来来,让一下,客官,您要的REST清蒸CRUD来了,火候刚刚好,不油不腻,请慢用~~~ 如果说前面是准备调料,洗菜,切菜,摆盘,那么今天就来完整的上道菜,主要说的是基于REST风格实现数据的增删改查 ...
- "bower.json 中出现语法错误" 的解决方案之一
当你用 Visual Studio 2015 Update 3 打开从别处下载的开源项目的时候,如果发现 Bower 提示 "bower.json 中出现语法错误". 请检查一下. ...
- .NET Core之Entity Framework Core 你如何创建 DbContext
本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明博客园蜗牛原文地址 http://www.cnblogs.com/tdws/p/5874212.html. 目前国内各大论坛,各位大牛的分 ...
- JavaWeb_day06_Filter过滤器
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day06 request 对象常用方法 respon ...
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...