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 多表级联更新
Oracle update 多字段更新的更多相关文章
- Oracle的timestamp字段更新实验 结论:只有逐条更新才能保证timestamp字段有差别,批量更新只会得到一致的时间,此操作无关时间精度.
有这么一张表: create table hy_testtime( id number(6,0) not null primary key, name nvarchar2(20) not null, ...
- Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果
我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT ...
- 【转】PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理
[转]PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理 只要有人用了: select t.* from ...
- sybase数据库和oracle数据库中字段中含有换行符的解决办法
最近在做数据库从sybase到oracle的迁移工作,sybase数据库表bcp导出后,通过sqlldr导入到oracle数据库,然后oracle数据库通过spool按照sybase数据库bcp的格式 ...
- php oracle数据库NCOLB字段ORA-01704
php oracle数据库NCOLB字段ORA-01704 对clob更新 ORA-01704: 字符串文字太长 解决办法:把字符赋值给一个变量,然后赋值update语句 declarev_clob ...
- Oracle Update语句
Oracle没有update from语法,可以通过四种写法实现同样的功能: 一.标准update语法(常用.速度可能最慢) 当更新的表示单个或者被更新的字段不需要关联表带过来,此法是最好的选择. u ...
- 如何使用MySQL一个表中的字段更新另一个表中字段
[本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...
- oracle update left join 写法
oracle update left join 写法 (修改某列,条件字段在关联表中) 案例: E:考核表 X,:用户表 USERNAME 关联 需求:修改营业部最高分 分析:通过登录账号的营业部OR ...
- Oracle update和select 关联
Oracle update和select 关联 目录 Oracle update和select 关联 1.介绍 2.解决方法 2.1.需求 2.2.错误演示 2.3.解决方法 1.介绍 本文主要向大家 ...
随机推荐
- JVM | JVM的核心技术
说到JVM,很多工作多年的老铁,可能就有点发憷了,因为搬砖多年,一直使用java这个工具,对于JVM没有了解过,有句话面试造航母,上班拧螺丝,要啥自行车啊,知道如何搬砖就可以了,为啥要懂这么多,如果你 ...
- leetcode39 组合总和
这道题想到的就是dfs,在累加的和大于或等于target时到达递归树的终点. 代码如下: class Solution { public: vector<vector<int>> ...
- 九十六:CMS系统之cms后台用户名渲染和注销功能
用户名渲染,使用flask的g对象,在用户请求进来之后,触发视图函数之前,拿用户的信息,放到g对象里面 @bp.before_requestdef before_request(): "&q ...
- rsync+inotify实时数据同步
没有实际的用过,先mark一下,后面实践. https://www.osyunwei.com/archives/7447.html 一.为什么要用Rsync+sersync架构? 1.sersync是 ...
- 时间复杂度O(n)
时间复杂度 算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法.一个算法的评价主要从时间复杂度和空间复杂度来考虑. 一.时间复 ...
- B站动手学深度学习第十八课:seq2seq(编码器和解码器)和注意力机制
from mxnet import nd h_forward = nd.array([1,2]) h_backward = nd.array([3,4]) h_bi = nd.concat(h_for ...
- Linux系统管理_主题02 :管好文件(1)_2.3 拷贝、剪切、删除和创建文件_cp_mv_rm
用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件... 将源文件复制至目标文件,或将多个源文件复制至目 ...
- VMware虚拟机桥接方式与真实主机共享上网
原始出处 .http://meiling.blog.51cto.com/6220221/1367695 一.先介绍一下VMware网络设置的三种方式: VMWare提供了三种工作模式,host-onl ...
- maria 忘记密码
1.找到mariadb配置文件命令:find / -name my.cnf 备注:一般是在 /etc/my.cnf 2.修改配置文件 在MariaDB配置文件/etc/my.cnf的[mysqld]配 ...
- LCTF (easy-100)
先安装跑一下,不知道为啥我这里模拟器打不开,传到手机上就可以.如下图. 一个输入框,一个按钮,随便输入提示no. 放入JEB反编译. 可以看到有6个Class.大体看一遍,b和e应该和解题无关,在类a ...