Oracle update 多字段更新

一次性update多个字段

以student表为例:

-- 创建学生表
create table student
(
  id number,
  name varchar2(40),
  age number,
  birthday date,
  address varchar2(200)
)

-- 插入数据
insert into student(id, name, age, birthday, address)
values(1, '王小波', 50, to_date('19700520','yyyymmdd'), '广州市天河区')

-- 查询
select * from student
-- 1	王小波	50	1970/5/20	广州市天河区

如果需要修改数据,一般语法:

update student
set name = '王大锤',
    age = 49,
    birthday = to_date('19710206','yyyymmdd'),
    address = '广州市越秀区'
where id = 1;

如果字段非常多,这样写就稍微麻烦点,因为待修改字段和待修改的数据没有分离。

还有另外一种写法(字段多的时候写的时候方便,书写效率高些;字段少的时候感觉不出来):

update student
set (name, age, birthday, address) = 
(select '王大锤', 49, to_date('19710206','yyyymmdd'), '广州市越秀区' from dual)
where id = 1

update 多表级联更新

多表级联更新语法为:

update tableA a set a.col1 = (select b.col1 from tableB b where b.col2 = a.col2),
                    a.col3 = (select c.col1 from tableC c where c.col2 = a.col2)
where condition

该语句作用就是当tableA中col2列的值等于tableB中col2列的值时,那么将tableA所在行的col1的值设置为tableB相应行的col1的值,当tableA中col2列的值等于tableC中col2列的值时,那么将tableA所在行的col1的值设置为tableC相应行的col1的值,换句话说就是将tablA中所有满足a.col2=b.col2的行的col1列的值设置为b对应的行的col1列的值,将tableA中所有满足a.col3=c.col1的行的col3列的值设置为c对应的行的col1列的值。

多字段update

Oracle 多字段 update语法为:

update table_a
set (a,b,c) = 
(select a,b,c from table_b)

参考链接1:oracle中update语句修改多个字段

参考链接2:oracle update 多表级联更新

posted @   Hider1214  阅读(28137)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示