oracle问题求教

以下有三道题目:利用rownum方法删除指定行删除m行到n行的记录在无限多的数据中,删除第m行n列的数值,然后在该位置添加数值。这些题目据说是面试题,我没做出来。哪位高手... 以下有三道题目:
利用rownum方法删除指定行

删除m行到n行的记录

在无限多的数据中,删除第m行n列的数值,然后在该位置添加数值。
这些题目据说是面试题,我没做出来。哪位高手来帮一下?
展开
 我来答
温顺且俊秀的小画眉鸟h
2013-07-09 · TA获得超过305个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:188万
展开全部

先建一张表,简单插入30条记录:

此时表中有三十条记录。


假设我要删除rownum所指定的10 到20 行,使用如下语句:

delete from king where  rowid in (select rid from(select id,name,rownum no,rowid rid from king where rownum <=20)where no >=10);

commit;

查看数据:发现其中对应数据已经被删除



简单说明下,对于rownum的使用,你不可以直接指定大于1的数字来使用,你需要利用子查询获得一个包含1的区间,然后根据需要再获得你想得到区间范围。比如,你想查询rownum10到20的数据:

select * from(select id,name,rownum no from king where rownum <=20)where no >=10


对于利用rownum来进行update,delete时,使用rowid这个伪列来操作可以很方便。

追问
delete from king where  rowid in (select rid from(select id,name,rownum no,rowid rid from king where rownum =10);
commit;
经验证不能运行。怎么回事?
追答
报什么错?
你检查下是否写的正确吧,程序应该没问题。我自己都跑了一遍,不会凭空捏造出来。
sellphy
2013-07-09 · 超过16用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:45.9万
展开全部
1、delete from table where rownum=m;
2、delete from table where rownum>=m and rownum<=n;
3、update table set column=2222 where rownum=m;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式