Merge语法
MERGE [hint] INTO [schema ] table [t_alias]
USING [schema ]{ table | view | subquery } [t_alias]
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
1)创建一个“比例因子”表
-- Create table
create table LF_FACT_GL
(
ID NUMBER(10),
VALID NUMBER(1) default 1 not null,
ZONE_ID NUMBER(10),
FACTOR_PG NUMBER(12,6) default 0 not null,
FACTOR_QG NUMBER(12,6) default 0 not null,
FACTOR_PL NUMBER(12,6) default 0 not null,
FACTOR_QL NUMBER(12,6) default 0 not null,
CASE_ID NUMBER(10) not null,
V_LEVEL NUMBER(10) default 0
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
comment on column LF_FACT_GL.CASE_ID
is '作业编号';
comment on column LF_FACT_GL.V_LEVEL
is '电压等级,固定;';
comment on column LF_FACT_GL.ZONE_ID
is '分区编号';
2)需求描述
用户可以将某个作业的比例因子导入到另一个作业下。如果另一个作业的比例因子中的“电压等级”和“分区编号” 与操作的作业下的比例因子的电压等级”和“分区编号”分别相等,则做更新操作,否则做插入操作。
3)实现的sql(mybatis)
<insert id="insertOrUpdate" parameterType="map">
MERGE INTO LF_FACT_GL T1
USING (SELECT ID ,VALID ,ZONE_ID , FACTOR_PG,FACTOR_QG ,FACTOR_PL,FACTOR_QL ,CASE_ID ,V_LEVEL
FROM LF_FACT_GL WHERE ID IN
<foreach collection="iDs" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) T2
ON (T1.ZONE_ID = T2.ZONE_ID AND T1.V_LEVEL = T2.V_LEVEL AND T1.CASE_ID = #{caseID} )
WHEN NOT MATCHED THEN
INSERT VALUES
( SEQ_PLSF_TBL.NEXTVAL , T2.VALID,T2.ZONE_ID,
T2.FACTOR_PG,T2.FACTOR_QG,
T2.FACTOR_PL,T2.FACTOR_QL,#{caseID},T2.V_LEVEL
)
WHEN MATCHED THEN
UPDATE SET T1.VALID = T2.VALID,
T1.FACTOR_PG = T2.FACTOR_PG,T1.FACTOR_QG = T2.FACTOR_QG,
T1.FACTOR_PL = T2.FACTOR_PL,T1.FACTOR_QL = T2.FACTOR_QL
</insert>
map(iDs:String[比例因子编号],aseID:作业编号)
merge 时,on(join 字段)不可以参加update ,否则报错(0n 关联字段不能更新 字段)
分享到:
相关推荐
在SQL中,有时候我们需要将查询结果中多行的数据合并成一行,这在处理某些特定的报表或数据分析时非常有用。这种技术通常被称为行合并或行聚合。在本例中,我们将探讨如何使用纯SQL实现这一功能,特别是针对Oracle...
多行数据一行显示多行数据一行显示多行数据一行显示多行数据一行显示
SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...
主要是关于sqlserver的多行转列的问题,这是我经过个人测试的语句。
SQL方法,将一列中的多行变为一行,将按一定条件筛查出来的多行数据变为一行数据
3. 用户交互:在执行可能影响数据的操作时,如更新或删除,通常需要提供用户确认,避免误操作。 4. 性能优化:如果数据量很大,应考虑分批处理,以减少对数据库的频繁访问,提高性能。 总的来说,这篇文档提供了在...
SqlServer将多行记录按分组信息一行显示
本文将深入探讨如何利用SQL实现多行数据的合并,特别关注字符串拼接的技术,并通过一个具体的示例来展示这一过程。 ### SQL字符串拼接的原理 在SQL中,字符串拼接是指将多个字符串值连接成一个单一的字符串。不同...
3. 多行操作:源码可能包含了批量插入、更新和删除数据的方法,这些都是通过遍历DBGrid中的行,然后执行相应的SQL语句来实现的。 4. 事件处理:通过监听TDBGrid的OnCellClick、OnEditAccept、OnEditCancel等事件,...
总之,Oracle SQL 提供了多种方式来插入数据,包括简单的单行插入、多行插入、从其他表导入以及批量导入等。根据不同的场景和需求,选择合适的方法可以更高效地管理和维护数据库中的数据。在处理大数据量时,尤其...
在C#编程中,批量插入数据到SQL Server数据库是一个常见的需求,特别是在处理大量数据时,效率至关重要。本篇文章将详细探讨三种不同的批量...通过读取数据并利用上述的批量插入技术,可以实现高效的数据迁移或更新。
### SQL语句行数据拆成多行及多行数据合并成一行的方法 #### 一、SQL语句对一行(单元格)数据拆分成多行 在处理数据时,有时我们需要将一行数据拆分成多行,这在数据分析和报表制作中非常常见。下面将详细介绍几...
在SQL Server中,插入多行数据到一个表中通常是通过使用`INSERT`语句配合`SELECT`和`UNION ALL`或`UNION`来实现的。在SQL Server 2000中,这个功能同样适用,对于初学者来说可能会感到困扰,但一旦掌握了这种方法,...
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 ...
SQL语句用with将列分割成多列存为临时表,再将多行某个字段拼接合并为一行
SQL中合并多行记录的方法总汇: –1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varchar(10)) INSERT tb SELECT 1, ‘aa’ UNION ALL SELECT 1, ‘bb’ UNION ALL SELECT 2, ‘aaa’ UNION ALL SELECT 2...
在LabVIEW中与数据库交互是常见的需求,本教程将详细介绍如何使用LabVIEW进行数据库的表格创建、数据更新、数据删除、数据查询以及数据插入,并展示如何显示这些数据。 首先,我们需要理解LabVIEW中的数据库接口。...
当我们需要更新或插入字段内容时,SQL函数就显得尤为重要。以下是一些关于如何使用SQL函数进行字段内容更新插入的关键知识点: 1. **更新字段内容**: 更新数据库表中的特定字段内容,可以使用`UPDATE`语句。基本...
sql 中 更新,插入text类型的字段 updatetext
Java 实现高效数据库插入数据 在 Java 程序中,实现高效的数据库插入数据是非常重要的。以下是相关的知识点: 使用 JDBC 连接数据库 在 Java 程序中,使用 JDBC(Java Database Connectivity)连接数据库是非常...