Merge 的小技巧
2015-11-26 23:03
351 查看
今天跟大家分享一下搬动数据使用Merge的方法。
有些时候,当我们做数据搬动的时候,有时候做测试啊,换对象啊,就会存在有时候外键存在,不知道怎么对应的关系。比如我现在有架构相同的两组table ,
A1 A2 和 T1 T2
然后我要将数据搬到 T1 T2 里面,这里就涉及一个ID对应的问题了,我怎么知道 A1的ID = 3对应是T1 的ID = ? 呢(当然你是可以使用 identity insert 的 ╮(╯_╰)╭) ,但是既然要用Merge。那我就用Merge
然后数据就搬过去了,然后故事就完了。。。。。
有些时候,当我们做数据搬动的时候,有时候做测试啊,换对象啊,就会存在有时候外键存在,不知道怎么对应的关系。比如我现在有架构相同的两组table ,
A1 A2 和 T1 T2
create table A1(ID int identity(1,1) primary key,Name varchar(50)); create table A2(ID int identity(1,1) primary key,A1ID int,Name varchar(50)); create table T1(ID int identity(1,1) primary key,Name varchar(50)); create table T2(ID int identity(1,1) primary key,T1ID int,Name varchar(50)); --随便插入几条数据 insert into A1(Name) values ('A'),('C'),('B'),('D'),('E'),('F'); --随便删除几条,让ID断号 delete from A1 where ID in (2,4); insert into A2(A1ID,Name) values (1,'AA'),(3,'BB'),(5,'EE'),(6,'FF'); --看下数据 select * from A1; ID Name ----------- -------------------------------------------------- 1 A 3 B 5 E 6 F select * from A2; ID A1ID Name ----------- ----------- -------------------------------------------------- 1 1 AA 2 3 BB 3 5 EE 4 6 FF
然后我要将数据搬到 T1 T2 里面,这里就涉及一个ID对应的问题了,我怎么知道 A1的ID = 3对应是T1 的ID = ? 呢(当然你是可以使用 identity insert 的 ╮(╯_╰)╭) ,但是既然要用Merge。那我就用Merge
--建一个临时表存放一下对应关系 create table #Tmp(A1ID int,T1ID int); --用Merge来插入,把插入结果Output到临时表里面 merge T1 using A1 on 1 = 0 when not matched then insert (Name) values(Name) output A1.ID,inserted.ID into #Tmp(A1ID,T1ID); --这样#Tmp就存有 A1 和 T1 的ID对应关系啦 insert into T2(T1ID,Name) select #Tmp.T1ID,A2.Name from A2 inner join #Tmp ON A2.A1ID = #Tmp.A1ID; select * from T1 ID Name ----------- -------------------------------------------------- 1 A 2 B 3 E 4 F select * from T2 ID T1ID Name ----------- ----------- -------------------------------------------------- 1 1 AA 2 2 BB 3 3 EE 4 4 FF
然后数据就搬过去了,然后故事就完了。。。。。
相关文章推荐
- 互联网各种免费接口整理
- SQLNull,tv及dgv的数据源设置
- Caddy
- JAVA创建XML文件(三)---DOM4J方式创建XML
- PLSQL显示优化
- Apache重写规则整理
- 配置zabbix实现邮件报警功能
- UITableView使用详解
- Deploy_Cluster_Apache
- 使用T-SQL进行数据导入导出方法详解
- NSURLSession
- FileReader读取文件方法
- 从大数据菜鸟走上大师的历程 Scala 第七讲 类属性 私有对象
- Oracle 常用命令
- 02.MyBatis配置文件详解
- volatile 关键字的作用
- bzoj1588【HNOI2002】营业额统计
- Objective-C 字符串
- 异步的SGD
- 实习笔记(2015-11-26)