下面是这样一个例子:

两个表a、b,想使b中的memo字段值等于a表中对应id的name值   
  表a:id,name   
            1       王   
            2       李   
            3       张   
  表b:id,ClientName   
            1         
            2   
            3   
(MS SQL Server)语句:update   b  set   ClientName   =   a.name   from   a,b   where   a.id   =   b.id

(Oralce)语句:update   b  set   (ClientName)   =  (SELECT name FROM a WHERE b.id = a.id)

(Mysql)语句:: UPDATE A, B SET A1 = B1, A2 = B2, A3 = B3 WHERE A.ID = B.ID

update set from 语句格式

当where和set都需要关联一个表进行查询时,整个 update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。
对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。

在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句,其实在 SQL 语法中,这些连接也是可以用于update 和 delete 语句的,在这些语句中使用 join 还常常得到事半功倍的效果。

Update T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo   B ON B.L_ID=A.ProductID

用来同步两个表的数据!

Oralce和DB2都支持的语法:

UPDATE A  SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

MS SQL Server不支持这样的语法,相对应的写法为:
UPDATE A  SET A1 = B1, A2 = B2, A3 = B3  FROM A LEFT JOIN B ON A.ID = B.ID

个人感觉MS SQL Server的Update语法功能更为强大。MS SQL SERVER的写法:
UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID

在Oracle和DB2中的写法就比较麻烦了,如下:

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

Mysql的写法是:

UPDATE A, B SET A1 = B1, A2 = B2, A3 = B3 WHERE A.ID = B.ID

转载于:https://www.cnblogs.com/Jian-Zhang/p/8723061.html

关于update set from where相关推荐

  1. 使用JPA进行Update操作 @Query注解的用法,JPL

    使用jpa进行update操作有两种,第一种就是先查询,set,再进行save更新.这种做法过于繁杂,我只是要进行一个更新操作却变成了三步,所以我推荐使用第二种: @Modifying @Query( ...

  2. 使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with

    使用JPA进行update操作时,报org.springframework.beans.factory.BeanCreationException: Error creating bean with ...

  3. SVN用法大全,SVN除了update、commit还有什么

    svn除了大家都知道的update.commit以外还有什么常用功能呢? 点击TortoiseSVN后,出现了右图的列表,这其中有哪些是常用的功能呢?最近在家办公,有些东西要svn操作,就了解了下. ...

  4. MySql数据库Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  5. Microsoft Store无法下载应用 Windows update服务无法启用,错误5:拒绝访问 的解决方法。

    Microsoft Store无法下载应用,点了安装没反应,查看服务里windows update开启了没有.只有这项服务开启才能在微软商店里安装应用. (ps:安装xbox需要把设置里地区改为香港特 ...

  6. ElasticSearch(六) Update API

    一.修改部分字段By  UpdateRequest UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(&qu ...

  7. Ubuntu apt-get install、apt-get -f install、apt-get --purge remove、apt-get update、apt-get upgrade、

    1. 常用命令列表 命令 描述 apt-cache search package 搜索软件包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-g ...

  8. update 改写 merge into

    update语句改写成merge into有时会提高运行速度 看两个案例 1.根据业务将两个嵌套子查询改写成max,速度有3min提升到3s UPDATE OPER_792.LL_SCB_YDKB_2 ...

  9. Oracle 触发器 Update 不能操作本表的疑问

    今天要解决一个需求,类似表A有个字段叫flag存储的是0 or  1 ,当一行记录更改为1的时候,其他行同字段要变为0. 这样的需求第一个思路想尝试下能否用触发器来实现 create or repla ...

  10. Oracle 10.2.0.5.4 Patch Set Update (PSU) – Patch No: p12419392

    有关Oracle patch和PSU,PSR 说明参考我的blog: Oracle 补丁体系 及opatch 工具 介绍 http://blog.csdn.net/tianlesoftware/art ...

最新文章

  1. 2022-2028年中国汽车修理行业市场前瞻与投资规划分析报告
  2. Java排序算法:冒泡排序
  3. 【干货】NLP中对困惑度感到困惑?
  4. Java的知识点14——内部类的概念、内部类的分类
  5. 为了OFFER而战,大四那些日子在牛客网和Leetcode刷SQL题目
  6. sql server:删除表数据,标识列Id从1开始
  7. as5300g2 nas软件功能_【浪潮混闪存储AS5300G5-可同时提供SAN和NAS两种服务的中端混闪存储系统】价格_厂家 - 中国供应商...
  8. 电脑cpu温度过高怎么办_网络资讯:电脑cpu占用过高处理办法
  9. React-JSX详细语法及渲染使用
  10. 成功修复2G金士顿U盘
  11. 数据分析师 vs 算法工程师,Python 出身的程序员如何抉择?
  12. #define typedef 枚举类型
  13. 站内搜索(ELK)之数据表字典类型字段的索引思路
  14. C++--第18课 - 继承与多态 - 下
  15. 克隆模式----快速与数据库比对数据
  16. 青岛飞阳计算机学校,青岛通济实验学校:综艺比赛 青春飞扬
  17. 【边缘计算】刘阳:边缘计算发展中的若干热点问题及思考
  18. wps表格l制作甘特图_如何制作甘特图(横道图)
  19. 那些优美的英文句子一
  20. 2 简单使用原形工具Axure RP

热门文章

  1. DIV CSS display (block none inline)属性的用法教程
  2. 数据结构算法集---C++语言实现
  3. redis常见关键字
  4. redis之adlist.c
  5. linux系统的5种文件类型及其属性符号
  6. 用时间戳判断两个时间是否在同一天和时区转换问题
  7. JRebel for IntelliJ 热部署方法
  8. spring10: 引用类型的自动注入
  9. linux运维入门第一周的学习部分命令!
  10. BZOJ 4584 [Apio2016]赛艇