求教update和select复合语句的写法

HitXU 2009-11-05 02:39:52
查询语句:
select * from statab where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS') and rownum<=100 order by time for update of flag skip locked

更新语句:
update satab set flag = 'new'

如何把这两个语句合成一个复合语句呢? 就是把查询到的记录的flag字段更新掉。
我尝试如下写法,但是不对:
update satab set flag = 'new' where rowid in( select rowid from statab where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS') and rownum<=100 order by time for update of flag skip locked )

请大家指点,这样的语句该怎么写呢? 谢谢了。
...全文
627 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HitXU 2009-11-16
  • 打赏
  • 举报
回复
已经结贴,明明每个人都给分了,为什么这里显示大家都是0分?

最后正确的答案应该是 “纯粹的sql是做不到的”。
iqlife 2009-11-11
  • 打赏
  • 举报
回复
肯定做不到,至少说非一般人能做到,
刚开始我就这样想的并且找了很久,无这样做法
乖,遵守规矩,写两条语句
inthirties 2009-11-11
  • 打赏
  • 举报
回复
sql应该做不到,

dml语句就是dml语句

查询语句就是查询语句。

不能有dml又有查询结果在一条sql的。 用function或者sp来做把。
嘟嘟xo 2009-11-11
  • 打赏
  • 举报
回复
要不就查询,要不就更新,要查询结果的同时还要更新,好像实现不了吧~
小灰狼W 2009-11-11
  • 打赏
  • 举报
回复
select语句不就是找出要更新的记录吗
并到update的where条件后面去了
这不是你要的结果吗?
只是你原先的查询语句有问题,所以改了一下
如果你只是要合并

update satab set flag = 'new'
where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS') and rownum <=100
就行了
HitXU 2009-11-11
  • 打赏
  • 举报
回复
谢谢两位的解答。
不过,我想问的是如何把这两个语句合成一个复合语句?

这好像是个难题。。。。
KingSunSha 2009-11-11
  • 打赏
  • 举报
回复
在pl/sql是可以用returning执行dml然后返回记录的,比如

set serveroutput on size 1000000
declare
w_id integer;
begin
update mytable
set id = 2
where id = 1
returning id
into w_id;
dbms_output.put_line(w_id);
end;
/


但纯粹的sql是做不到的。
小灰狼W 2009-11-05
  • 打赏
  • 举报
回复
update satab a set flag='new'
where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS')
and (select count(1) from satab
where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS')
and time <=a.time) <=100
小灰狼W 2009-11-05
  • 打赏
  • 举报
回复
rownum<=100 order by time
楼主是想按时间排序,前100个进行更新吧。可是这么写是错误的,这里先取rownum再order by,不能得到楼主想要的结果
update satab a set flag='new'
where (select count(1) from satab
where time>to_date('2009-10-03 10:00:00','YYYY-MM-DD HH24:MI:SS')
and time<=a.time)<=100
cosio 2009-11-05
  • 打赏
  • 举报
回复
and rownum <=100 还有取100条,更新为什么要这个条件?

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧