oracle字段加1 100分

Anderson_young 2014-10-29 11:16:04
oracle字段加1的方法有哪些?除掉update 表名 set value = value+1 where 条件
...全文
351 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-11-20
  • 打赏
  • 举报
回复
update 表名 set value = value + sign

update 表名 set value = value + decode(sign,1,1,0,0)

都没有 value+1
ffshao 2014-11-19
  • 打赏
  • 举报
回复
我觉得楼主写个自加的函数得了,多绕点路就不会被看出来了
小灰狼W 2014-10-30
  • 打赏
  • 举报
回复
引用 2 楼 u013451083 的回复:
[quote=引用 1 楼 bw555 的回复:] 这个是作业题? update 表名 set value = value+1 where 条件 这写法已经是最简单的了,改成其他的肯定没这个效率高 差不多作业题 用这个函数呢 DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数 解释: IF AA=V1 THEN RETURN R1 IF AA=V2 THEN RETURN R2 ..… ELSE RETURN NULL
有道理。思路第一,效率再议 做开发,思路很重要
bw555 2014-10-30
  • 打赏
  • 举报
回复
引用 5 楼 zlloct 的回复:
[quote=引用 4 楼 bw555 的回复:] 他是想把数据表的所有值都写一遍,10个8个的还好说,这要上百万条数据,还不得累死
难到想这样?: update 表名 set value = decode(value,1,2,2,3,3,4,4,5...null) where 条件[/quote] 现在的老师都有毛病啊,有最好的方式不让用,让学生想些奇形怪状的方案来实现,这要放在实际工作中……,唉!
CT_LXL 2014-10-30
  • 打赏
  • 举报
回复
引用 4 楼 bw555 的回复:
他是想把数据表的所有值都写一遍,10个8个的还好说,这要上百万条数据,还不得累死
难到想这样?: update 表名 set value = decode(value,1,2,2,3,3,4,4,5...null) where 条件
bw555 2014-10-30
  • 打赏
  • 举报
回复
引用 3 楼 zlloct 的回复:
decode函数起到if的作用,如你解释的一样,好像跟你的要求没什么关系啊
他是想把数据表的所有值都写一遍,10个8个的还好说,这要上百万条数据,还不得累死
CT_LXL 2014-10-30
  • 打赏
  • 举报
回复
引用 2 楼 u013451083 的回复:
[quote=引用 1 楼 bw555 的回复:] 这个是作业题? update 表名 set value = value+1 where 条件 这写法已经是最简单的了,改成其他的肯定没这个效率高 差不多作业题 用这个函数呢 DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数 解释: IF AA=V1 THEN RETURN R1 IF AA=V2 THEN RETURN R2 ..… ELSE RETURN NULL
decode函数起到if的作用,如你解释的一样,好像跟你的要求没什么关系啊
华而不实 2014-10-30
  • 打赏
  • 举报
回复
两点之间,直线最短
Anderson_young 2014-10-30
  • 打赏
  • 举报
回复
引用 13 楼 bw555 的回复:
照你这思路写成case when也行了,条件还不一定是等值比较 update 表名 set value = (case when 条件 then value+1 else value end) 不过再怎么写也是直接“update 表名 set value = value+1 where 条件” 这样的执行效率最高的
而且不管怎样写 理解的时候还不是这样“update 表名 set value = value+1 where 条件”理解的 我主要想知道大家还有没有其他的方法 麻烦点也没关系
bw555 2014-10-30
  • 打赏
  • 举报
回复
照你这思路写成case when也行了,条件还不一定是等值比较 update 表名 set value = (case when 条件 then value+1 else value end) 不过再怎么写也是直接“update 表名 set value = value+1 where 条件” 这样的执行效率最高的
Anderson_young 2014-10-30
  • 打赏
  • 举报
回复
引用 9 楼 zlloct 的回复:
[quote=引用 8 楼 u013451083 的回复:] update 表名 set value =decode(sign,1,value+1,0,value) //当sign为1时返回value+1,为零返回value
看来你是想根据其他的值更改成相应的值,并不是简单的value+1,如果你的SIGN是表里字段,直接加入条件进行更改,岂不更好。 update tb set value=value+1 where sign=1.[/quote] 关键是要求不能直接用value=value+1呀
Anderson_young 2014-10-30
  • 打赏
  • 举报
回复
引用 10 楼 bw555 的回复:
sign哪来的?表里面的字段?
恩恩
bw555 2014-10-30
  • 打赏
  • 举报
回复
sign哪来的?表里面的字段?
CT_LXL 2014-10-30
  • 打赏
  • 举报
回复
引用 8 楼 u013451083 的回复:
update 表名 set value =decode(sign,1,value+1,0,value) //当sign为1时返回value+1,为零返回value
看来你是想根据其他的值更改成相应的值,并不是简单的value+1,如果你的SIGN是表里字段,直接加入条件进行更改,岂不更好。 update tb set value=value+1 where sign=1.
Anderson_young 2014-10-30
  • 打赏
  • 举报
回复
引用 5 楼 zlloct 的回复:
[quote=引用 4 楼 bw555 的回复:] 他是想把数据表的所有值都写一遍,10个8个的还好说,这要上百万条数据,还不得累死
难到想这样?: update 表名 set value = decode(value,1,2,2,3,3,4,4,5...null) where 条件[/quote] update 表名 set value =decode(sign,1,value+1,0,value) //当sign为1时返回value+1,为零返回value
Anderson_young 2014-10-29
  • 打赏
  • 举报
回复
[quote=引用 1 楼 bw555 的回复:] 这个是作业题? update 表名 set value = value+1 where 条件 这写法已经是最简单的了,改成其他的肯定没这个效率高 差不多作业题 用这个函数呢 DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数 解释: IF AA=V1 THEN RETURN R1 IF AA=V2 THEN RETURN R2 ..… ELSE RETURN NULL
bw555 2014-10-29
  • 打赏
  • 举报
回复
这个是作业题? update 表名 set value = value+1 where 条件 这写法已经是最简单的了,改成其他的肯定没这个效率高的

17,086

社区成员

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

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