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 ...
 
随机推荐
- 在春意盎然的季节里初识GIT
			
Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征. ...
 - Oracle ------ SQLDeveloper中SQL语句格式化快捷键
			
Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...
 - 2.Kali安装VMware tools(详细+异常处理)
			
dnt@MT:~$ cd /media/cdrom0 进入光驱内 dnt@MT:/media/cdrom0$ ls 查看当前目录下有哪些内容manifest.txt run_upgrader.sh V ...
 - CSS系列:CSS常用样式
			
1. 通用样式 Base.css * { margin:; padding:; } body { width: 1000px; margin: 0 auto; font-size: 12px; fon ...
 - android笔记:获取View组件宽度以及ViewTreeObserver
			
View宽高测量方法: 测量方法有三种,如下: 1)(直接在onCreate()执行) int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureS ...
 - SQL Server-聚焦移除Bookmark Lookup、RID Lookup、Key Lookup提高SQL查询性能(六)
			
前言 前面几节都是讲的基础内容,本节我们讲讲索引性能优化,当对大数据进行处理时首先想到的就是索引,一旦遇到这样的问题则手忙脚乱,各种查资料,为何平常不扎实基本功呢,我们由浅入深,简短的内容,深入的理解 ...
 - 深入理解Sqlserver文件存储之页和应用 (转)
			
我们每天都在使用数据库,我们部门使用最多的关系数据库有Sqlserver,Oracle,有没有想过这些数据库是怎么存放到操作系统的文件中的?有时候为了能够设计出最优的表结构,写出高性能的Sqlserv ...
 - webpack 填坑指南
			
根据慕课网的教程,重写的一遍基于webpack+react的画廊应用 github地址 第一坑: 使用json-loader的时候require文件的时候报错,显示: Module build fai ...
 - SpingMVC 核心技术帮助文档
			
声明:本篇文档主要是用于参考帮助文档,没有实例,但几乎包含了SpringMVC 4.2版本的所有核心技术,当前最新版本是4.3,4.2的版本已经经是很新的了,所以非常值得大家一读,对于读完这篇文档感觉 ...
 - HTML5学习笔记之History API
			
这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美 ...