`
datamachine
  • 浏览: 163525 次
社区版块
存档分类
最新评论

简化SQL计算之编写动态MERGE语句

    博客分类:
  • DB
阅读更多

         MSSQLORACLE等数据库支持MERGE语句更新表,但表结构未知时,由于缺乏集合类数据,用存储过程获得表结构再动态拼出SQL非常麻烦,代码会有几十行之多;同样原因,用Java等高级语言实现也不简单。而且使用存储过程或Java程序需要代码将内置于数据库或应用程序中,更新管理较为麻烦。这时候可用集算器来协助处理,代码可置于数据库和应用程序之外,不影响数据库与应用程序的结构,易于维护。

         参数sourcetarget代表两个结构相同但数据不同的表,要求以主键为标准用source更新target,比如table1table2的主键都是AB,数据如下:

 

         table2更新table1时,MERGE语句应当如下:

MERGE INTO table1 as t
USING table2 as s
ON t.A=s.A and t.B=s.B
WHEN MATCHED
THEN UPDATE SET t.C=s.C,t.D=s.D
WHEN NOT MATCHED
THEN INSERT VALUES(s.A,s.B,s.C,s.D)

 

         更新后table1应当如下:



 

   集算器代码:



 
 

        A1,A2: 从系统表中读出表source的主键存入变量pks,计算结果为集合[”A”,”B”]。各种数据库获得主键的方法不同,这里以MSSQL为例。

        A3,A4:读出source的完整字段,columns的计算结果为[”A”,”B”,”C”,”D”]

        A5:动态生成MERGE语句。pks.(…)是循环函数,可对集合(包括结果集)的成员依次计算,计算中可用~引用循环变量,用#引用循环计数。

        A6:执行MERGE语句。
 

  • 大小: 23.4 KB
  • 大小: 13.2 KB
  • 大小: 86.6 KB
0
1
分享到:
评论

相关推荐

    性能优化与SQL审计高效SQL语句编写.pdf

    在SQL优化的过程中,我们应当充分利用新的SQL特性,如`MERGE`语句,它能够合并INSERT、UPDATE和DELETE操作,简化逻辑并提高效率。`WITH`子句则可以用于创建临时结果集,方便复杂的查询和分析。此外,分析函数...

    SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题

    在SQL Server中,`MERGE`语句是一种强大的工具,用于合并两个数据集,它可以实现插入、更新或删除操作。然而,当源表数据集为空时,`MERGE`语句可能不会按照预期的方式工作。这个问题在【标题】和【描述】中已经提到...

    update语句的优化-oracle .pdf

    总结来说,针对Oracle数据库的update语句的优化,主要可以从简化SQL语句结构、合理使用子查询和join操作、采用merge语句以及编写PL/SQL游标处理等多方面入手。在实际应用中,根据具体情况选择合适的优化方案,能够...

    Oracle_merge

    在 Oracle 9i R2 版本之前,如果需要同时进行更新和插入操作,开发人员通常需要编写两条独立的 SQL 语句:一条用于更新现有数据,另一条用于插入新数据。这种做法不仅繁琐,而且可能导致数据不一致的风险。为了解决...

    SQL Server Merger实现数据的同步

    ### SQL Server Merger 实现数据同步与合并 #### 摘要 ...它不仅简化了代码编写过程,还提高了数据处理的准确性和效率。对于需要频繁进行数据同步的场景而言,`MERGE`语句无疑是一种理想的选择。

    merge用法详解

    总结起来,`MERGE`语句是Oracle中强大的数据同步工具,它简化了在多个数据源之间进行复杂数据操作的过程。正确使用`MERGE`可以提高代码的可读性和维护性,减少编写大量条件判断的代码。但同时,需要注意`ON`后的条件...

    Oracle高级sql学习与练习

    4. MERGE语句用于将一个查询结果集与另一个表或查询结果集合并。它是一种高效的数据操作方法,特别适用于数据同步、更新或插入操作。 5. 层次查询(HIERARICAL RETRIVEL)通常指在Oracle中通过CONNECT BY语句实现的...

    Microsoft SQL Server 2008技术内幕

    5. **MERGE语句**:MERGE语句用于合并INSERT、UPDATE和DELETE操作,使得数据同步和维护更为简洁。 6. **CLR集成**:SQL Server 2008进一步增强了与.NET Framework的集成,允许使用C#或VB.NET编写存储过程、触发器和...

    SQL Server 2008 (1).ppt

    在SQL Server 2008之前,这些操作通常需要多个DML语句完成,而MERGE语句则简化了这个过程,提高了代码的可读性和性能。 - **表值参数**:解决了将一组值传递给存储过程或函数的问题。在SQL Server 2005中,通常需要...

    ORACLE PL/SQL从入门到精通

    此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...

    DB2 SQL 精萃.pdf

    11. 使用MERGE语句进行数据操作。 12. 采集样本数据的技术。 13. 如何使用DISTINCT去除结果集中的重复行。 14. SQL语句中OR的使用,以及如何避免。 15. WHERE子句中函数的使用限制。 16. SQL语句中LIKE的使用注意...

    SQL Server2008中的T—SQL功能改进.pdf

    MERGE语句是SQL Server 2008的一个重要增强,它结合了INSERT、UPDATE和DELETE操作,可以有选择地合并两个数据源。以下示例展示了如何使用MERGE将数据合并到MyTable2中: ```sql CREATE TABLE MyTable2 (ID int, Item...

    Teradata-SQL.rar_teradata_teradata sql

    11. **性能优化**:包括查询优化器、统计信息收集、表设计优化等方面的知识,帮助用户编写出高效的SQL语句。 12. **错误处理和调试**:了解如何识别和解决SQL执行过程中的错误,以及如何使用日志和诊断工具进行问题...

    买书1111111111

    3. **编写 MERGE INTO 语句**:根据关联字段构建 MERGE INTO 语句,如上面给出的示例。 4. **执行 SQL 语句**:运行 MERGE INTO 语句以完成数据同步。 ### 知识点三:MERGE INTO 语句的优点 使用 MERGE INTO 语句...

    jpasql.rar

    JPA通过ORM(对象关系映射)技术将Java对象与数据库表进行映射,允许开发者用面向对象的方式来操作数据,而无需直接编写SQL语句。 **SQL(Structured Query Language)** 是用于管理和处理关系数据库的标准编程语言...

    SQL SERVER 2008 新特性 英文版

    MERGE语句的加入,提供了一种更高效的方式将多个源数据集合并到目标表中,同时对分组集进行了增强,简化了复杂的数据整合和分析任务。 ### DDL触发器增强 DDL触发器的增强,允许在数据定义语言事件发生时执行特定...

    oraclesql参考手册

    7. 存储过程和函数:存储过程是预编译的SQL语句集合,可以包含控制流语句,提高性能并简化代码。函数返回一个值,常用于计算或处理。`CREATE PROCEDURE`和`CREATE FUNCTION`用于定义,`EXECUTE`或`CALL`执行。 8. ...

    my sql resource

    - `MERGE` 语句用于合并插入、更新和删除操作。 - `CTE`(公共表表达式)提供了临时结果集,用于复杂的查询和递归操作。 - `OVER` 子句用于定义一个窗口,允许在窗口内进行聚合或排序操作。 - CLR SP(Common ...

    ORACLE SQL性能优化规范

    总结,Oracle SQL性能优化是一个涉及多个层面的过程,包括选择合适的查询结构、优化器策略、索引管理和SQL编写技巧。遵循这些规范,可以显著提升Oracle数据库的响应速度,降低系统资源消耗,从而提升整体应用性能。

    neo4j最全面指南以及springboot+java驱动不用编写复杂语句

    - **SQL 类似查询**: 提供类似于 SQL 的查询语言 CQL (Cypher Query Language),简化了数据查询的复杂度。 - **属性图模型**: 基于属性图数据模型进行数据存储,能够直观地表示复杂的关系。 - **索引支持**: 使用 ...

Global site tag (gtag.js) - Google Analytics