MERGE批量增删查改数据
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批量增删查改数据的更多相关文章
- Mybatis 的动态SQL,批量增删查改
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 批量增删改的接口: public interface BookService { //批量增加 int ...
- dbflow 批量 增删查改
@ModelContainer @Table(database = DemoDatabase.class) class Person extends BaseModel implements Seri ...
- redis增删查改数据Util
目录 (1)需要导入的包 (2)redis配置文件 (3)RedisUtil类 (1)需要导入的包 <dependency> <groupId>org.springframew ...
- 利用dbutils工具实现数据的增删查改操作(dbutis入门)
一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...
- SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
- 学习记录——使用PHP实现数据增删查改等基本功能(前后端分离)
萌新初次学习服务器端语言,分享学习经验 实现功能:1.显示数据表 2.对数据进行分页 3.对数据进行增删查改 由于本萌新采用前后端完全分离方案,所以数据传输用的ajax,为了提高代码的复用 ...
- [置顶] cocos2dx sqllite 增删查改等操作
首先导入文件shell.c sqllite3.c sqlite3.h sqlite3etx.h文件(注意在生成安卓项目是 不要将shell.c写进android.mk文件中,写进去在cywin中生成会 ...
- [MongoDB] MongoDB增删查改
MongoDB的三元素,数据库.集合.文档,集合就是表,文档就是行 开启MongoDB,cd切换到MongoDB的安装目录下的bin目录里,使用命令mongod 开启,参数:--dbpath 路径,把 ...
随机推荐
- CH 4302 Interval GCD
辗转相减法的扩展 $gcd(x, y, z) = gcd(x, y - x, z - y)$ 当有n个数时也成立 所以构造$a_{i}$的差分数组$b_{i} = a_{i} - a_{i - 1}$ ...
- debug---null Pointer Exception--一步步查找(2)
添加PartyLocationRepository后,再次在Ubuntu中编译项目,再次报空指针异常. 直接在createDto处打断点,然后debug每个表达式的值,找出来到底是哪个为null. 经 ...
- IntelliJ Idea 免费激活方法
文章介绍 文章不错,指的研究一下,idea的联网激活确实有可行性,但是上有政策,下有对策,如何才能保护版权,是一个值得深思的问题. 文章属于转载,文末有文章来源,转载注明出处. 1 激活码激活 到网站 ...
- 【转】虚拟机 NAT网络设置
我以下写的配置方法别人在网上已经发布过类似的文章.但是我觉的别人写的东西不一定是对的,必须自己亲自试验一下才行.就像有句话说的:“实践是检验真理的唯一标准”以下是我操作的步骤.希望不足的地方,读者能够 ...
- 水平居中的那些事之解决jqpagination分页插件无法居中的问题
固定宽度的元素水平居中只需要 margin-left:auto: margin-right:auto; 换成 margin:0 auto; 也是一样的 今天给我用的jqPagination分页插件实现 ...
- Hyper-V 中遇到错误 'vm' could not initialize
不知道前面做了什么操作,但当我启动我的虚拟机时遇到了'vm' could not initialize的错误,如下图: 在几番尝试未果后,找到了如下解决方法: 以管理员模式启动cmd,执行命令 net ...
- C++: I/O流详解(三)——串流
一.串流 串流类是 ios 中的派生类 C++的串流对象可以连接string对象或字符串 串流提取数据时对字符串按变量类型解释:插入数据时把类型 数据转换成字符串 串流I/O具有格式化功能 例: #i ...
- How to solve multi-version conflict of OpenCV or PCL on ROS kinetic?
Solve multi-version conflict prepare: make sure you know which version is in your machine: dpk-confi ...
- Django个人博客开发 | 前言
本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier 1.前言 自学 Python,始于 Django 框架,Scrapy 框架,elasticsearch搜索引擎 ...
- [BZOJ4916]神犇和蒟蒻 杜教筛/Min_25筛
题目大意: 给定\(n\le 10^9\),求: 1.\(\sum_{i=1}^n\mu(i^2)\) 2.\(\sum_{i=1}^n\varphi(i^2)\) 解释 1.\(\sum_{i=1} ...