MERGE优点:

  在批量处理数据的时候,我可以用到merge一次完成数据处理。

示例代码一:

MERGE INTO student AS t
using (SELECT '丽水' AS NAME,20 AS age UNION ALL SELECT '王五' AS NAME ,21 AS age) s
ON t.Age=s.age
WHEN MATCHED
THEN UPDATE SET t.Name=s.NAME
WHEN NOT MATCHED
THEN INSERT VALUES(s.NAME,s.age)
WHEN NOT MATCHED BY SOURCE
THEN DELETE;

实例一output还可以返回增删查改的变化

示例二:

ALTER PROCEDURE pro_send
AS
BEGIN
--查询需要发放
DECLARE @ruleTabs TABLE
(
id INT ,
phone NVARCHAR(12),
tluxRuleId INT ,
value INT ,
ValidityTime INT
) BEGIN TRANSACTION
BEGIN TRY INSERT INTO @ruleTabs
( id, phone, tluxRuleId, value,ValidityTime )
SELECT TOP 50 a.id,a.PhoneNo, b.TluxRuleID,c.Value,c.ValidityTime FROM dbo.hk_RaffleResult AS a
LEFT JOIN dbo.hk_RaffleResultType AS b ON a.PrizeId=b.PrizeId
LEFT JOIN dbo.hk_TluxRule AS c ON b.TluxRuleID=c.Id
WHERE a.Status=1 AND a.IsAutoUse=1 SELECT * FROM @ruleTabs --发放券
MERGE INTO dbo.hk_Tlux AS t
USING @ruleTabs AS s
ON t.RaffleResultId=s.id
WHEN NOT MATCHED THEN
INSERT ( TluxNumber ,Status ,CreateTime ,ExpireTime ,
Type ,UserPhone ,UserType ,UserTime ,Remark ,
FlowNo ,StorePhone ,TluxRuleID ,RaffleResultId
)
VALUES(
s.value,1,GETDATE(),DATEADD(DAY,s.ValidityTime-1,CONVERT(varchar(100), GETDATE(), 102)),
5,NULL,NULL,NULL,'',
NULL,s.phone,s.tluxRuleId,id); --修改发放状态
UPDATE dbo.hk_RaffleResult SET Status=2
FROM dbo.hk_RaffleResult AS a INNER JOIN @ruleTabs AS b ON a.id=b.id COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK
END CATCH END
GO

MERGE批量增删查改数据的更多相关文章

  1. Mybatis 的动态SQL,批量增删查改

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 批量增删改的接口: public interface BookService { //批量增加 int ...

  2. dbflow 批量 增删查改

    @ModelContainer @Table(database = DemoDatabase.class) class Person extends BaseModel implements Seri ...

  3. redis增删查改数据Util

    目录 (1)需要导入的包 (2)redis配置文件 (3)RedisUtil类 (1)需要导入的包 <dependency> <groupId>org.springframew ...

  4. 利用dbutils工具实现数据的增删查改操作(dbutis入门)

    一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...

  5. SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)

    SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...

  6. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  7. 学习记录——使用PHP实现数据增删查改等基本功能(前后端分离)

    萌新初次学习服务器端语言,分享学习经验 实现功能:1.显示数据表    2.对数据进行分页    3.对数据进行增删查改 由于本萌新采用前后端完全分离方案,所以数据传输用的ajax,为了提高代码的复用 ...

  8. [置顶] cocos2dx sqllite 增删查改等操作

    首先导入文件shell.c sqllite3.c sqlite3.h sqlite3etx.h文件(注意在生成安卓项目是 不要将shell.c写进android.mk文件中,写进去在cywin中生成会 ...

  9. [MongoDB] MongoDB增删查改

    MongoDB的三元素,数据库.集合.文档,集合就是表,文档就是行 开启MongoDB,cd切换到MongoDB的安装目录下的bin目录里,使用命令mongod 开启,参数:--dbpath 路径,把 ...

随机推荐

  1. 主机(windows)与VMware虚拟机(linux)互传文件

    网上有不少教程,比如http://bbs.kafan.cn/thread-451327-1-1.html,我仅记录我平时用的方法. 1.VMware tools:  如果有网,且Linux有桌面的,可 ...

  2. 杭电acm 1021题

    题意是要求能被3整除的数所以为了避免大数据的产生,直接对每个数据求余,然后相加 #include "iostream" using namespace std; int main( ...

  3. rest-framework组件 之 视图三部曲

    浏览目录 使用混合(mixins) mixin类编写视图 使用通用的基于类的视图 viewsets.ModelViewSet 视图三部曲 使用混合(mixins) from rest_framewor ...

  4. javax.swing.Timer

    javax.swing 类 Timer java.lang.Object javax.swing.Timer 所有已实现的接口: Serializable public class Timerexte ...

  5. bootstrap.js 文件使用指南

    介绍 使用 Bootstrap v3.3.7 时,需要引入三个脚本文件. https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.m ...

  6. java 集合(转载)

    一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  7. Linux计划任务 定时任务 Crond 配置详解 crond计划任务调试 sh -x 详解 JAVA脚本环境变量定义

    一.Crond 是什么?(概述) crontab 是一款linux系统中的定时任务软件用于实现无人值守或后台定期执行及循环执行任务的脚本程序,在企业中使用的非常广泛.     现在开始学习linux计 ...

  8. Django会话,用户和注册之cookie

    HTTP状态和TCP不一样,HTTP是无状态的,也就是这一次请求和下一次请求之间没有任何状态保持,我们无法根据请求例如IP来识别是否在同一人的连续性请求.就像我们在访问网站的时候,输入了用户名和密码, ...

  9. vue添加新属性不更新原因

    一: 在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去: 当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后 ...

  10. [Django笔记] 从已有的数据库构建应用

    Django适合从零开始构建,所谓 'Green-field' 开发.那么当我需要基于已存在的数据库构建应用时怎么办呢? inspectdb # 扫描默认数据库 python manage.py in ...