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;

其他替代方法随后再做尝试。

时间: 2024-10-09 15:51:46

Oracle update和order by的相关文章

Oracle Update 语句语法与性能分析 - 多表关联

Oracle Update 语句语法与性能分析 - 多表关联 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create table customers ( customer_id number(8) not null, -- 客户标示 city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create

Oracle Update 数据

Client login 1.SQL Plus请求使用TCP/IP 连接 指定TNS服务名 如 ubuntu .Client process读取tnsnames.ora file 向指定的主机发送数据包 2. Server 端接受请求 监听器进程获取客户端发过来的TNS数据包.检查配置文件,符合配置则调用fork() 生成子进程 3. 子进程收集本进程所在的主机名.IP地址及进程号等信息,按照参数文件申请用一小块PGA内存. 4. 这时子进程在这里华丽的变身为Server process . 此

Oracle Update 一定还有你不知道的更新方式

Basic Update Statements The Oracle UPDATE statement processes one or more rows in a table and sets one or more columns to the values you specify. Update all records UPDATE <table_name>SET <column_name> = <value> CREATE TABLE test ASSELEC

UPDATE...WHERE...ORDER&#160;BY...LIMIT语句

在MySQL中尽量少使用UPDATE ...WHERE ...ORDER BY ...LIMIT语句,原因是MySQL会对where条件匹配的所有记录加上X锁,如果多个线程同事执行这条语句,就会有非常大的概率发生死锁,而且MySQL服务器不能自动的去解除这种死锁. 下面的例子证实了这一点,先创建一张record表,再插入几条记录 mysql> create table record( -> id int(11) primary key, -> name varchar(20) defau

Oracle Update TOP N Issue, 请专家解答

大家好 上周写了匿名方法一文,很多读者,很高兴,相信我们已经从大伙的回复中,对.NET又有了更深刻的认识. 好,现在说主题,各类数据库都有相应更新本表top n的方案.现在我一一举例 首先看表结构如下: 数据库以及表创建命令初始化数据库语句 1 CREATE TABLE student( 2 id varchar(256) NOT NULL, 3 name varchar(256) NULL, 4 age int NULL) 1 insert into student values('001',

Oracle update+with的使用场景

drop table test purge; create table test( id number, code varchar(20), name varchar(20) ); insert into test values(1,'201401','aaa'); insert into test values(2,'201402','bbb'); insert into test values(3,'201402','ccc'); insert into test values(4,'201

oracle update语句

Oracle在表中更新数据的语法是: 语法结构:UPDATE操作 UPDATE 表名 SET 列名1=值,列名2=值-- WHERE 条件 代码演示:UPDATE操作 SQL> UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山东莱芜' WHERE STUNAME='阮小二';

oracle中提高order by的性能

1.如果order by columnA,那么在where查询条件中添加条件columnA=value,则oracle内部会过滤order by排序,直接用索引. 2.如果order by columnA,columnB,那么在where查询条件中添加条件columnA=value1,columnB=value1,则oracle内部会过滤order by排序,直接用索引. 3.如果order by columnA,但是在where查询条件中没有columnA=value,那么在查询的时候添加hi

oracle update优化

一.         update语句的语法与原理 1.     语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation set join_state='1'whereyear='2011' 更新年度为"2011"的数据的join_state字段为"1".如果更新的字段加了索引,更新时会重建索引,更新效率会慢. 多表关联,并把一个表的字段值更新到另一个表中的字段去: update