Oracle Cannot Update TOP N Issue, 请专家解答
大家好
上周写了匿名方法一文,很多读者,很高兴,相信我们已经从大伙的回复中,对.NET又有了更深刻的认识.
好,现在说主题,各类数据库都有相应更新本表top n的方案.现在我一一举例
首先看表结构如下:
数据库以及表创建命令初始化数据库语句
CREATE TABLE student(
id varchar(256) NOT NULL,
name varchar(256) NULL,
age int NULL)
insert into student values('','wfg',20);
insert into student values('','lxx',21);
insert into student values('','wly',3);
insert into student values('','jcj',60);
insert into student values('','wss',60);
insert into student values('','xsm',60);
insert into student values('','lcf',60);
insert into student values('','wjy',35);
insert into student values('','hyf',35);
insert into student values('','lwl',12);
表格结构如下:
| ID | Name | Age |
| 001 | wfg | 20 |
| 002 | lxx | 21 |
| 003 | wly | 3 |
| 004 | jcj | 60 |
| 005 | wss | 60 |
| 006 | xsm | 60 |
| 007 | lcf | 60 |
| 008 | wjy | 35 |
| 009 | hyf | 35 |
| 010 | hwl | 12 |
需求如下:按姓名顺序后,更新前5个的年龄为100岁,如何办到.
首先说下MSSQL
--方案1失败
update top(5) student set age = 100 order by name;
--方案2ok
update student set age = 100 where id in (select top 5 id from student order by name );
select top(5) * from student order by name;
很成功,干得漂亮!
接下来我们看看MYSQL呢,拭目以待...
update student set age = 100 order by name limit 5;
select * from student order by name limit 5;
Good news, MySql干得不错,
接下来我们再看看oracle呢?
--方式1失败
update student set age = 100 where rownum <5 order by name ;
commit;
--方式2失败
update student set age = 100 where id in (select id from student where rownum<5 order by name);
commit;
select * from student where rownum<5 order by name;
目前为此,还没有在oracle里找到办法,请数据库专家指导,感谢为盼!
Oracle Cannot Update TOP N Issue, 请专家解答的更多相关文章
- .NET 匿名方法的BUG,请专家解答
匿名方法是.NET 3.5之后的一个好东东,很多人使用,但是我在最近的工作当中发现了一个问题. 请专家解答 //list里存放10个数字 List<); ; i < ; i++) { li ...
- sql: oracle, for update和for update nowait的区别
1. oracle for update和for update nowait的区别 http://www.cnblogs.com/quanweiru/archive/2012/11/09/276222 ...
- 在SQL Server中如何进行UPDATE TOP .....ORDER BY?
前言 今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录. SQL SERVER之UPDATE TOP.. ...
- oracle执行update语句时卡住问题分析及解决办法
转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...
- EBS报错FRM-92095:Oracle JInitiator版本太旧,请安装版本1.1.8.2或更高版本
EBS打开报错FRM-92095:Oracle JInitiator版本太旧,请安装版本1.1.8.2或更高版本 打开EBS的form,系统报错,中文提示信息是:FRM-92095:oracle ji ...
- Oracle EBS R12 WIP Component Issue&Return Process
oracleassemblytransactionscomponentsjobsreference 目录(?)[-] 定义BOM 定义Routing 定义WIP Discrete Job 发料 Mat ...
- Oracle的update语句优化研究
最近研究sql优化,以下文章转自互联网: 1. 语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation s ...
- [转]oracle for update和for update nowait的区别
1概念小结:(针对以下引用区域内容) 1.1 普通select语句不加锁. 1.2 for update和for update nowait都试图将符合条件的数据加上行级锁.用于排斥其他针对这个表的写 ...
- oracle for update和for update nowait
原文地址:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762223.html 1.for update 和 for update nowa ...
随机推荐
- Python基础-变量作用域
1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局 ...
- jetty中war包解压路径
这是个很奇怪的问题,如果下载好了jetty直接放入war包运行,项目会被解压到C盘的临时文件夹中.但是如果你在${JETTY_HOME}文件夹,也就是jetty解压后的根目录中新建,注意是新建一个wo ...
- 搭建Dynamic Web Project(动态web项目)的springmvc工程1
本文转载自:http://blog.csdn.net/typa01_kk/article/details/45902955 此篇创建Dynamic Web Projec工程(动态web项目),下一篇, ...
- H5浏览器播放RTMP直播流
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...
- (转)编写 DockerFile
这几天在研究怎样制作docker image. 其中使用dockerfile是一种可记录制作image的过程的并且是容易重复使用的一种方式.在园子里看到了一篇好文,于是分享到这里~~ 原文链接: ht ...
- python学习(十七) 扩展python
c, c++, java比python快几个数量级. 17.1 考虑哪个更重要 开发速度还是运行速度更重要. 17.2 非常简单的途径:Jython和IronPython Jython可以直接访问JA ...
- linux lcd设备驱动剖析三
上一节文章中详细地剖析了probe函数,但是从始至终都没有看到打开读写文件接口的操作函数,只看到了下面这个操作结构体 [cpp] view plain? static struct fb_ops s3 ...
- netty实现远程调用RPC功能
netty实现远程调用RPC功能 依赖 服务端功能模块编写 客户端功能模块编写 netty实现远程调用RPC功能 PRC的功能一句话说白了,就是远程调用其他电脑的api 依赖 <dependen ...
- c#6.0特性
(1)可以直接对自动属性初始化,而且允许非标准属性使用 例如: public string Gender{get;}="男";//非标准属性 public DateTime Bir ...
- leetcode690
class Solution { public: int getImportance(vector<Employee*> employees, int id) { ; map<int ...