V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhuzhuaini
V2EX  ›  Oracle

请教 sql update 更新的值是另外一个字段通过计算的值 并且整表更新 怎么写

  •  
  •   zhuzhuaini · 2023-02-16 10:50:14 +08:00 · 858 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设表 A ,有三个字段,id,age,newage 内容是
    table A:
    id age newage
    1 10 0
    2 20 0
    3 25 0

    我需要写一个 sql 整表更新 newage 的数据为它原本的 age+10-5

    需要更新成这样:
    table A:
    id age newage
    1 10 15
    2 20 25
    3 25 30

    当然运算不会这么简单,我会用一些函数啥的 反正就是通过他 age 字段的值 一系列运算 然后得出新值

    用的是 oracle...
    6 条回复    2023-02-16 11:15:10 +08:00
    zhuzhuaini
        1
    zhuzhuaini  
    OP
       2023-02-16 10:51:59 +08:00
    这个太难描述了-.- 搜了下都没有找到合适的解决方案
    有说可以先把查询结果放入临时表 再通过临时表更新 问题 oracle 的存储过程里的临时表好像没法创建还是咋的,用了几个网上的示例都报错
    koloonps
        2
    koloonps  
       2023-02-16 10:56:12 +08:00
    触发器全表更新不就可以了?
    zhuzhuaini
        3
    zhuzhuaini  
    OP
       2023-02-16 10:58:16 +08:00
    @koloonps 这个太专业了没研究过 有没有用存储过程或者一句 sql 就解决的....
    sharping
        4
    sharping  
       2023-02-16 11:00:17 +08:00
    你就用原值就行了,比如 update xx set age = age+10;
    c6h6benzene
        5
    c6h6benzene  
       2023-02-16 11:11:17 +08:00 via iPhone
    @zhuzhuaini Oracle 不确定,但你可以试试子查询
    zhuzhuaini
        6
    zhuzhuaini  
    OP
       2023-02-16 11:15:10 +08:00
    @sharping 还真是 竟然如此简单 是我想的太复杂了,然后网上一查各种示例 越陷越深
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1073 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.