合并数据

SQL Server 2008 引入了一个称为MERGE
的语句,它能在一条语句中根据逻辑条件对数据进行不同的修改操作(INSERT、UPDATE和DELETE)。MERGE语句是SQL
标准的一部分,而T-SQL版本的MERGE语句也增加了一些非标准的扩展。

因为MERGE语句是新增的,所以必须使用SQL Server 2008。

使用MERGE语句的好处是:用较少的代码就可以表达需求,提高查询性能,因为它可以更少地访问查询涉及表。

MERGE INTO dbo.Customers AS TGT

USING dbo.CustomersStage AS SRC

  ON TGT.custid=SRC.custid

WHEN MATCHED THEN

  UPDATE SET

    TGT.companyname=SRC.companyname,

    TGT.phone=SRC.address,

    TGT.address=SRC.address

WHEN NOT MATCHED THEN

  INSERT (custid,companyname,phone,address)

  VALuES( SRC.custid,SRC.companyname,SRC.phone,SRC.address);

注意:MERGE
语句必须以分号结束,而对于T-SQL中的大多数其他语句来说,以分号结束语句是可选的。但是,如果遵循最佳实践,用分号结束所有语句,这也并不会带来什么麻烦。

当存在匹配时,该MERGE 语句定义了一个UPDATE
操作,将目标表的companyname、phone及address设置为来源表中相应行的同名列值。注意,此处UPDATE操作的语法和普通的UPDATE语句很类似,只是不须要再提供更新操作的目标表,因为在MERGE子句中已经定义好了目标表。

当不存在匹配时,该MERGE语句定义了一个INSERT操作,将来源表中的数据行插入目标表。同样,此处INSERT操作的语法和普通的INSERT语句很类似,只是不须要再提供插入操作的目标表,因为在MERGE子句中已经定义好了目标表。

T-SQL 还支持第3种子句WHEN NOT MATCHED BY
SOURCE,它用于定义对于目标表的一个行,在来源表中没有与之匹配的行时应该采取的操作。

合并数据,布布扣,bubuko.com

时间: 2024-10-11 05:22:00

合并数据的相关文章

POI Excel 合并数据相同的行

import java.io.Serializable; /** * POI Excel报表导出,列合并实体<br> * * @author WQ * */ public class PoiModel implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String content; private String oldContent; private int ro

SqlServer中的UNION操作符在合并数据时去重的原理以及UNION运算符查询结果默认排序的问题

原文:SqlServer中的UNION操作符在合并数据时去重的原理以及UNION运算符查询结果默认排序的问题 本文出处:http://www.cnblogs.com/wy123/p/7884986.html 周围又有人在讨论UNION和UNION ALL,对于UNION和UNION ALL,网上说的最多的就是性能问题(实在不想说出来这句话:UNION ALL比UNION快)其实根本不想炒UNION和UNION ALL这碗剩饭了,每次看到网上说用这个不用那个,列举的一条一条的那种文章,只要看到说U

(译)Getting Started——1.3.1 Incorporating the Data(合并数据)

在实现完应用的行为后,需要创建数据模型来支撑应用的界面.应用的数据模型定义了应用中数据的维护方法.数据模型可以是一个基本的dictionary类型,也可以是复杂的数据库,范围很广.好的数据模型可以更为轻松的构建伸缩性强的应用,还可以提升功能,改变特性. 应用的数据模型由数据结构和(可选的)自定义的业务逻辑组成.你从来都没有想过要把数据模型和应用界面完全的剥离开.但是,你肯定有过这样的考虑:不依赖于某个视图或某个视图控制器,单独的实现数据模型.如果你保证了数据和界面的分离,那你就会发现,这样做更有

Pandas 合并数据

axis合并方向 import pandas as pd import pickle import numpy as np df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d']) df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d

多线程计算数据,然后合并数据

假设有一个计算量非常大的任务,使用单线程处理会花费很长时间才能处理完成,这时候可以考虑使用多线程分批计算数据,然后再汇总数据输出.在这里,使用了CyclicBarrier来实现.这个类的功能就是指定特定的线程数,等到这些线程都执行完毕之后,才会执行它的await()方法后面的代码,如果在构造器里设定了一个线程类,那么会在业务线程执行完毕之后,先执行构造器里的线程,然后执行await方法后面的线程. package test; import java.util.HashMap; import ja

SQL查询数据重复问题,和合并数据问题

前几个月,做项目.查询数据遇到数据重复问题 用 distinct 这个关键字去重,大多数情况下都可以去重的 SELECT  distinct a.id,a.* from a ItemName = stuff((SELECT ',' + ItemName FROM InspectBill AS t WHERE t .InspectBillNo = InspectBill.InspectBillNo FOR xml path('')), 1, 1, '')

ArcGis 001270 : 合并数据失败

描述 工具无法将服务所需的数据和资源打包. 如果用于发布 GIS 资源的路径或要向服务器复制的数据的路径大小超出了操作系统的限制,则当您向 ArcGIS 服务器复制数据时会发生此错误. 此路径包括过渡文件夹的路径和服务器连接的名称.同时还包括要发布的 GIS 资源的路径.例如,如果正在发布地图服务,则此路径将包括服务定义中所包含的地图服务定义 (.msd) 的名称.同时还包括该资源所使用的每个数据源的路径.也包括在功能性栅格或镶嵌数据集中所使用的路径. 解决方案 尝试发布的资源可能包含错误.使用

mysql合并数据

在网上看了其他写的,在本地执行的时候有问题,补充说明下,不知道是数据版本问题还是什么,值得注意的地方 红色部分必须是这样的,不然都不会成功 create table user1( id int(10) not null auto_increment, name varchar(50), sex int(1), primary key(id) )engine=myisam charset=utf8; create table user2( id int(10) not null auto_incr

php 按列值合并数据

/* * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreach($array1 as $key => &$value) { $result[$key] = array_merge($value, $array2[$key]); } return $result; }