`

联表更新

 
阅读更多

多表关联更新字段值,将一个表字段值更新为另一个表字段对应的值。

update EHR_Areagrid a set a.regioncode =

(select b.newregioncode from areagrid_comparison b where a.regioncode = b.oldregioncode)

where exists (select 1 from areagrid_comparison b where a.regioncode = b.oldregioncode);

 

请你尤其注意这里的where子句,你可以尝试不写where子句来执行以下这句话,你将会使得EHR_Areagrid中的很多值变成空。

这是因为在oracle的update语句中如果不写where子句,oracle将会默认的把所有的值全部更新

 

链接:http://blog.csdn.net/chenghaibing2008/article/details/22686713

 

一、MS    SQL    Server   多表关联更新
     sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。 
     一般形式:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式   from B WHERE    逻辑表达式
例如:
    UPDATE dbo.Table2 
    SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB 
    FROM dbo.Table2 
    INNER JOIN dbo.Table1 
    ON (dbo.Table2.ColA = dbo.Table1.ColA);
    实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的
二、Oracle     多表关联更新
     Oracle没有update from语法,可以通过两种实现方式:
update    A   
     SET    字段1=(select    字段表达式    from    B    WHERE    ...),   
       字段2=(select    字段表达式    from    B    WHERE    ...)   
     WHERE    逻辑表达式  




   UPDATE多个字段两种写法:


写法一:
UPDATE table_1 a 
   SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m), 
       col_x2 = (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) 
WHERE EXISTS (SELECT * FROM table_2 b WHERE b.col_n = a.col_m)

UPDATE table_1 a 
   SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m), 
       col_x2 = (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) 
WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)


写法二:
UPDATE table_1 a 
   SET (col_x1, col_x2) = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) 
WHERE EXISTS (SELECT * FROM table_2 b WHERE b.col_n = a.col_m);



UPDATE table_1 a 
   SET (col_x1, col_x2) = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) 
WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)






更新单个记录
UPDATE PUR_PO K SET K.AMOUNT_HASACCEPT_UA=AMOUNT_HASACCEPT_UA+
(SELECT TOTAL_AMOUNT FROM PUR_ACCEPT WHERE  FORM_NO=1021 AND ACCEPT_TYPE_VALUE=1 AND STATUS='UA') G
WHERE K.FORM_NO=G.PO_NO 




更新多个记录

Oracle写法1

 

Merge into PUR_PO A

   Using (SELECT TOTAL_AMOUNT,PO_NO FROM PUR_ACCEPT WHERE  FORM_NO=1021 AND ACCEPT_TYPE_VALUE=1) B
     on (A.FORM_NO=B.PO_NO  )
    when Matched then Update set A.a=A.a-B.TOTAL_AMOUNT,A.b=A.b+b.TOTAL_AMOUNT
 

Oracle写法2 

 

UPDATE PUR_PO p1 set(a, b)=(select p1.a - p2.total_amount, p1.b + p2.total_amount from PUR_ACCEPT p2 where p1.form_no=p2.po_no and p2.FORM_NO=1021 AND p2.ACCEPT_TYPE_VALUE=1)

where  exists(select * from PUR_ACCEPT p2 where p1.form_no=p2.po_no and p2.FORM_NO=1021 AND p2.ACCEPT_TYPE_VALUE=1)

分享到:
评论

相关推荐

    联表查询增删改查利用easyui做界面

    提交修改后,后台同样通过联表更新语句更新对应表的记录。 4. 查找:EasyUI的datagrid支持筛选和排序功能,用户可以根据商品名称、供应商名称或类别等条件快速查找所需信息。后台则根据这些条件构造带有WHERE子句的...

    Mysql联表update数据的示例详解

    MySQL中的联表更新操作是一种高效的数据管理技巧,它允许你在单个UPDATE语句中同时更新两个或更多相关联的表。这种技术特别适用于那些需要基于其他表中的信息来修改数据的情况。本文将深入探讨MySQL UPDATE JOIN语法...

    jpa入门案例:单表查询,包括分页查询 使用springboot来整合实现

    在本案例中,我们将探讨如何使用SpringBoot集成JPA实现单表查询和分页查询。首先,我们需要在SpringBoot的`pom.xml`文件中引入JPA和Spring Data JPA的相关依赖。Spring Data JPA是Spring对JPA的扩展,提供了更高级的...

    MySQL中联表更新与删除的语法介绍

    相信大家在日常使用mysql,可能会遇到需要同时更新两张表时,我会采用在同一个事务中使用2句sql语句分别进行更新。其实,这种需要发送2句sql语句的方法效率相对来说是比较低的,有没有只用1句sql语句就可以完成这个...

    软件系统上线更新申请表.pdf

    Android HD 工作站系统功能更新说明是软件系统上线更新申请表的重要信息,指的是Android HD 工作站系统的功能更新说明,例如增加 18 导联功能、后台多种打印模板的设置等。 16. 工频滤波自适应修改 工频滤波自适应...

    2021全国完整的银行联行号.xls

    我是管理公司付款系统,常要维护联行号数据表,数据的完整性更是用户体验好的基石,为了避免转账打款失败,都要求填写正确的联行号,但不知道如果获取完整联行号表,我整理这样一版数据表,字段内容包括:银行简码...

    ORACLE_多表关联_UPDATE_语句

    Oracle数据库中的多表关联UPDATE语句是用于在一个表中更新数据时,依据另一个表的条件进行操作的关键技术。这在处理复杂的数据同步或修正场景时非常有用。在本例中,我们将探讨如何利用多表关联来更新数据,并通过...

    sql一些基本常用的语句

    根据两个表中的`cmc`字段值进行联表更新。 30. **跨数据库查询**: ```sql SELECT * FROM yxyydb..tbzdcwtjmza WHERE a.cmc NOT IN (SELECT a.cmc FROM yxyydb..tbzdcwtjmza, yxhis..tbzdcwtjb WHERE a.cmc = b....

    sqlserver实用教程

    这在现实世界的数据分析中非常常见,如联表更新和删除操作。第3章和第5章的结合使用,能让你熟练地处理复杂的数据检索任务。 在进阶部分,第12章“存储过程”、第13章“自定义函数 [兼容模式]”和第14章“触发器”...

    2020年12月15日更新银行联行号大全

    2020年12月15日更新银行联行号大全,原攀枝花商行和凉山商行更新为四川银行。 银行联行号是一个地区银行的唯一识别标志,通过联行号识别到相应的支行机构,常常使用的代付转账的功能都知道,每次转账都需要填写联行...

    2020全国联行号&省市字段代码全11月更新.xlsx

    2020全国联行号&省市字段代码全11月更新 省、市、银行、网点、联行号。 数据齐全,11月更新 适用于金融绑卡 联行号,开户行编号,结算卡开户银

    GridView联表搜索

    在本文中,我们将深入探讨`Yii2`框架中的`GridView`组件,特别是在实现联表搜索和排序方面的应用。`Yii2`是一个强大的PHP框架,它提供了丰富的功能来简化Web应用程序的开发,而`GridView`是其中的一个核心组件,用于...

    销售管理系统 6张表联表查询 含登录 分页

    在这个系统中,"6张表联表查询"表明了数据库设计采用了多表关联的方式,这通常是为了解决复杂的数据关系和获取更全面的信息。下面我们将深入探讨这些关键知识点。 首先,Struts2是一个流行的Java Web框架,用于构建...

    省市级联列表

    标题中的“省市级联列表”通常是指在数据库设计中用于存储中国省份和城市信息的一种数据结构,这在很多需要地域信息的应用中非常常见,比如电商、物流、招聘网站等。这种列表一般会包括省份和其下属的城市,形成一个...

    SSH部门员工管理 联表查询

    此外,Spring的事务管理能确保数据库操作的一致性和可靠性,对于多表操作如联表查询尤其重要。在SSH部门员工管理中,Spring可以帮助我们实现跨多个表的操作,例如查询某个部门的所有员工,或者根据员工ID获取其所在...

    Oracle中用一张表的字段更新另一张表的字段

    在Oracle数据库中,当需要将一个表的字段值更新到另一个表时,通常可以使用`MERGE INTO`语句来实现。`MERGE INTO`是一个非常强大的SQL操作,它结合了`INSERT`、`UPDATE`和`DELETE`的功能,允许你在匹配条件的基础上...

    springboot和mybatis整合(单多表)

    7. **XML文件更新**:在UserMapper的XML文件中,编写SQL查询语句,通过`article_id`查询作者。 ```xml SELECT u.* FROM users u JOIN articles a ON u.id = a.author_id WHERE a.id = #{articleId} ``` 8. **...

    Java封装自联表一对多

    在Java编程中,"封装自联表一对多"是一个重要的概念,主要应用于关系数据库与对象模型的映射,尤其是在使用ORM(Object-Relational Mapping)框架如Hibernate或MyBatis时。这一概念涉及到数据结构、面向对象编程以及...

    从数据表中读取省市地区,实现省市级联

    在IT领域,省市级联(Province-City-Region Cascade)是一种常见的前端交互设计,它用于在用户界面中创建一个逐级展开的下拉选择菜单,通常用于地理信息的选择,如地址输入。这种设计允许用户首先选择省份,然后根据...

Global site tag (gtag.js) - Google Analytics