一次性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 多字段更新的更多相关文章

  1. Oracle的timestamp字段更新实验 结论:只有逐条更新才能保证timestamp字段有差别,批量更新只会得到一致的时间,此操作无关时间精度.

    有这么一张表: create table hy_testtime( id number(6,0) not null primary key, name nvarchar2(20) not null, ...

  2. Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果

    我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT ...

  3. 【转】PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理

    [转]PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理 只要有人用了: select t.* from ...

  4. sybase数据库和oracle数据库中字段中含有换行符的解决办法

    最近在做数据库从sybase到oracle的迁移工作,sybase数据库表bcp导出后,通过sqlldr导入到oracle数据库,然后oracle数据库通过spool按照sybase数据库bcp的格式 ...

  5. php oracle数据库NCOLB字段ORA-01704

    php oracle数据库NCOLB字段ORA-01704 对clob更新  ORA-01704: 字符串文字太长 解决办法:把字符赋值给一个变量,然后赋值update语句 declarev_clob ...

  6. Oracle Update语句

    Oracle没有update from语法,可以通过四种写法实现同样的功能: 一.标准update语法(常用.速度可能最慢) 当更新的表示单个或者被更新的字段不需要关联表带过来,此法是最好的选择. u ...

  7. 如何使用MySQL一个表中的字段更新另一个表中字段

    [本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...

  8. oracle update left join 写法

    oracle update left join 写法 (修改某列,条件字段在关联表中) 案例: E:考核表 X,:用户表 USERNAME 关联 需求:修改营业部最高分 分析:通过登录账号的营业部OR ...

  9. Oracle update和select 关联

    Oracle update和select 关联 目录 Oracle update和select 关联 1.介绍 2.解决方法 2.1.需求 2.2.错误演示 2.3.解决方法 1.介绍 本文主要向大家 ...

随机推荐

  1. Bootstrap视频教程

    一.全局CSS样式 0.课件 001.概览_栅格系统 2.排版和代码 3.表格和按钮 4.表单 5.图片 6.辅助类 7.响应式工具 二.组件 8.图标_下拉菜单_按钮组 9.输入框组 10.导航 1 ...

  2. DataFactory生产手机号码

    表中的数据类型是CHAR()类型的,才会出现,如右图的“Build a composite field”的这个功能: 固定部分设置 剩余变化部分设置 操作成功 数据库查询的结果

  3. UIGestureRecongnizer 手势拦截 对于特殊需求很有用

    手势其实也有代理方法的,通过代理方法可以做到更多关于手势方面的功能 比如在下面的方法中,如果是UIButton的点击就阻止手势的点击事件. // called before touchesBegan: ...

  4. 软件-绘图-AutoCAD:百科

    ylbtech-软件-绘图-AutoCAD:百科 AutoCAD(Autodesk Computer Aided Design)是Autodesk(欧特克)公司首次于1982年开发的自动计算机辅助设计 ...

  5. NLP之电影评分数据的情感分析

    1.基于词袋模型的逻辑回归情感分类 # coding: utf-8 import re import numpy as np import pandas as pd from bs4 import B ...

  6. CentOS 7 最小化安装后的注意事项

    http://blog.csdn.net/f_srion/article/details/54910943 在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装,而最小 ...

  7. 使用AWS、Docker与Rancher提供弹性的生产级服务

    2017-07-26 开始想你的 RancherLabs AWS Summit 2017 Beijing已经圆满落幕啦!亚马逊公司首席技术官沃纳·威格尔博士莅临现场,分享 AWS 最新云解决方案,把握 ...

  8. CACTI批量添加linux主机sh脚本

    关于批量添加就三个文件:add_hosts.sh,ips.txt,thold_test.php,关于如何使用,更是简单 ./add_hosts.sh --add #执行批量工作./add_hosts. ...

  9. Vim/gVim 中文显示为乱码的解决办法

    打开vimrc文件,在vim的安装目录下可以找到该文件,或在windows下是在vim/gvim下输入:edit $vim/_vimrc. 在文件的末尾添加一句 "set fileencod ...

  10. Ubuntu开放指定端口

    一般情况下,ubuntu安装好的时候,iptables会被安装上,如果没有的话那就安装上吧 安装 在终端输入 sudo apt-get install iptables 添加规则 在终端输入 ipta ...