sqlserver A表插入B表后如何返回A表原有ID和插入B表后新增ID的对应关系

表:A

id(自增), name

1 ‘a’

2 ‘b’

表 B
id(自增), name

3 'c'
4, 'd'

执行
insert into B(name) select name from A

表 B

id(自增), name

3 'c'
4 'd'
5 'a'
6 'b'

现在的问题是如何返回 A表插入B表后新增的ID及原A表的ID对应关系

newID oldID

5 1
6 2

sql
0

5个回答

这个不大多都是框架来做么?你数据层用的什么呀?

0
child_1986
child_1986 是希望能用sql语句来做
大约 4 年之前 回复

你最好不要变动key,如果是自增,除非你有另一个字段作为匹配,否则基本对不上,所以最好自己维护一个key

0
child_1986
child_1986 不动key,只是希望得到新的ID和老的ID之间的对应关系,因为还要处理ID关联的其他表
大约 4 年之前 回复

根据A表的name值,做一个连接查询,查询A表和B表中name值相同的数据,将NewID,OldID查询出来并返回

0
child_1986
child_1986 回复于亮: 这样只能循环逐行插入了吧,不想用循环,希望能直接insert into B select from A这样简洁一些
大约 4 年之前 回复
jiuqiyuliang
于亮 回复child_1986: 建立一个第三张表,插入数据时也想第三张表插入一条,有一个自增主键,其他字段用A,B表主键等
大约 4 年之前 回复
child_1986
child_1986 回复于亮: 可以有临时表,但是我没想明白逻辑怎么弄,关联的时候只能用ID啊
大约 4 年之前 回复
child_1986
child_1986 回复于亮: 可以有临时表,但是我没想明白逻辑怎么弄,关联的时候只能用ID啊
大约 4 年之前 回复
jiuqiyuliang
于亮 回复child_1986: 能不能通过第三表来联系表A和B
大约 4 年之前 回复
child_1986
child_1986 回复于亮: 不行哦,B表太大,加字段认为开销太大
大约 4 年之前 回复
jiuqiyuliang
于亮 回复child_1986: 那看看能不能在B表增加字段白
大约 4 年之前 回复
child_1986
child_1986 只有ID是标识哦,name可能会出现重复的
大约 4 年之前 回复
jiuqiyuliang
于亮 当然name需要唯一,不要然这样不行
大约 4 年之前 回复
  • 使用游标逐行插入。
  • 每插入一行,将原id和新id的对照记录到一个临时表中
  • 全部插入完以后,显示临时表
0
child_1986
child_1986 回复知常曰明: 谢谢,我再想想其他的方法
大约 4 年之前 回复
gamefinity
知常曰明 回复child_1986: 你要老的id,本来就不是一个标准的做法,当然采取的策略也不能用标准的策略啦。标准的做法就是把老的id放到另一个字段,如@于亮所说
大约 4 年之前 回复
child_1986
child_1986 回复知常曰明: 批量插入时用output这个想法呢,但只能输出新的ID,找不到老的ID
大约 4 年之前 回复
gamefinity
知常曰明 回复child_1986: 效率应该没有你想象的那么慢。因为两表的关联是保存到一个临时表里的,既没有索引,又没有历史数据。从B表读出是一样的,写到A表,用统一的一个事务的话也相差有限。千万别每个insert一个事务
大约 4 年之前 回复
child_1986
child_1986 表量很大,这样执行效率有些慢,有别的解决方案吗
大约 4 年之前 回复

你有另一个字段作为匹配,否则基本对不上,所以最好自己维护一个key

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
向表A插入一条数据,获取插入当前数据的ID,然后把这条ID插入表B
insert into  B 表 (ID ) values ( @@IDENTITY)
SQL把A表的某列插入到B表的某列 根据关联ID
update 表B set base_price=a.base_price from 表A a inner join 表B b on a.id=b.goods_idnnn
SQL-从B表往A表插入数据,如果A表有相同数据不重复插入。(增加更新数据的方法)
nINSERT INTO rel_tag_bed (tagId, bedNo, wardNo, userName, sex, age)n SELECTn tagId,n bedNo,n wardNo,n userName,n s...
[Mysql举例]-- mysql向A表插入B表新增数据(即找出2表不同的数据)
一、创建测试表结构nnt_basicinfo表结构一:nnnCREATE TABLE `t_basicinfo` (n `id` varchar(36) NOT NULL COMMENT '唯一ID',n `name` varchar(45) DEFAULT NULL COMMENT '名称',n `type` varchar(30) DEFAULT NULL COMMENT '类型',n ...
向B表插入A表有而B表无的数据;更新A表数据到B表
rn rn两个excel表 ,18日数据表和19日数据表. 并有两个要求:rn 1. 18日表中的记录,如果在19日表中不存在,则将18日表中的此记录插入19日表2. 18日表中标注了充值人的记录,用来替换19日表中的相同记录rn分别把两个excel中的数据通过navicat中的"导入向导"导入到mysql中我新建的两张临时表temp3和temp4.rn18日数据对应temp3;rn19日数据对应...
mysql生成一条A表数据的同时得到这条数据的自增ID
INSERT INTO pf_mission (title,createTime,status) values (#{title},now(),1)rnrn注:此法传入的参数只能是一个对象,在数据库生成自增Id后马上将此Id赋值给参数对象,即给该对象setId(自增的id)rnrnrn因之前想在生成一条A表数据的同时立刻给B表生成一条数据,并且将A数据的自增Id赋值给B表的一个字段,整个想法错误,
sql server 将A数据库中a表的数据插入B数据库中的b表
DECLARE @SortCode varchar(20);rnDECLARE @NewsTitle VARCHAR(100);rnDECLARE @ClassID VARCHAR(40);rnDECLARE @Content varchar(8000);rnDECLARE @Click INT;rnDECLARE @CreatTime VARCHAR(20);rnDECLARE @UpdateT
oracle,把A表在B表没有的字段数据插入到B中
INSERT INTO nEVENTMASK nVALUE (n SELECT n EVENTID AS EVENTID n ,#{EMPLOYEEID,jdbcType=VARCHAR}AS EMPLOYEEIDn , #{UUID,jdbcType=VARCHAR} AS EVENTMASKUUID n ( select EVEN
Mysql中用表a中数据更新另一表b中数据的同时a的数据被修改
测试使用的隔离级别为Read Repeatablen建表和插入数据的SQL语句nncreate table test1(id int auto_increment primary key, no int, key(no));ncreate table test2(id int auto_increment primary key, no int, key(no));nnninsert
【Oracle】将A表中有的数据,但是B表中没有的数据,插入到B表中;
1.先查询A表中有,但是B表中没有的数据;nnnnselect * form A a wherenNO EXISTS(nselect a.id from A a where a.id = b.id;n);nn2.将A有B没有的数据,插入到B表中;这里用的不是常规的values,而是insert into table_name +查询的记录;这种模式;如果不是全插入,可以将子查询的全查询改为部分查询...
MySql触发器:A表更新B表新增
创建触发器nCREATE TRIGGER T_TRIGGER_UPDATE nBEFORE|AFTER UPDATE|INSERT|DELETEnON 表A FOR EACH ROWnBEGINn insert into 表B(列1, 列2, ...) VALUES(NEW.列1, NEW.列2, ...);nENDnn解释:T_TRIGGER_UPDATE为触发器名字;BEFORE|AFT...
查询A表B表同时存在记录, A表存在而B表不存在记录, B表存在而A表不存在记录
1. 问题n 查询A表B表同时存在记录, A表存在而B表不存在记录, B表存在而A表不存在记录n如上图, 其中:A区域是old表有, new表没有的集合; nC区域是new表有, old表没有的集合; nB区域是old表与new表共有的集合。Q:已知old表与new表的表结构相同, 求A, B, C集合。2. 场景模拟解决下面有两张表分别为old表与new表, 表结构完全相同, 如下:/*Tabl
利用子查询找出某个属性存在A表而不存在B表的数据
概述假设有两张表,A表和B表A表:n idn namen age 1n xxxn 15n 2n yyyn 18n 3n zzzn 20nB表:n idn b_idn age 1n 1n 15n 2n 2n 18n其中B表的b_id字段引用了A表的id字段。现在有个查询需求: n给出已知的A表中的id,比如:id in (1,2,3),找出这些id在B表中没有
SQL数据库B库表数据导入到A库表
------------ A库表数据导入到B库表(同类结构库)nuse  A库ngon set identity_insert 表名   ONn goninsert into 数据库表名n(  字段1  ,n字段2 ,n...... ,n.....  ,n........,n 字段N  )nselect n字段1  ,n字段2 ,n...... ,n....
对多表进行添加数据(获取最后一条插入的数据的ID)
有时我们会需要对多张表进行关联,今天我需要用到多表添加。不知道怎么弄但是想了下可以获取到第一张表最后一次进行添加的数据,我只会两种方法:一是获取到最后一次进行添加的时间,二是获取到最后进行添加的ID。我用的是第二种获取到最后进行操作添加的ID。rn先将一张表进行添加数据的操作,写上查询语句“select LAST_INSERT_ID()”获取到最后一次添加的ID。获取到ID后返回一个int型的值,
将A 表数据插入B表而B表不存在 Oracle 写法
--请将部门人数大于5人的部门名称和人数插入一张新表nn--将A 表数据插入B表而B表不存在 ,sql server 写法n--select * into B from An--将A 表数据插入B表而B表不存在 Oracle 写法n--create table B as select * from A;ncreate table Total(dname,menberTotal) as select
数据库 a表左连接b表,a中一条数据对应b中多条数据,如何只取b表中createDate最大的一条
CREATE TABLE a rnrn(id INT)rnrnCREATE TABLE Brnrn(cid INTrnrn,createDatern DATETIME)rnrn rnrnINSERT INTO a rnrnSELECT 1 rnrnUNIONrnrnSELECT 2   rnrn rnrn rnrnINSERT INTO b SELECT 1,'2016-02-19'rnrnUNI
oracle数据库-A表的数据导入到B表
1.两张表数据结构一致nnnninsert into tableB select * from tableA (这里可以输入过滤条件)nn2.指定字段nnnninsert into tableB (col1, col2, ...) SELECT col1, col2, ... FROM tableA;nn3.插入B中不存在的差异数据nnnninsert into tableB n(id,name...
Oracle中如何把A表一列的数据插入到B表的一列中
插入时,问题是B表的数据为空,并没有对应的主键ID,所以应该用序列来生成(创建表的时候必须添加一个序列)nnn表A 列aa 序列SEQ_An表B 列bb 序列SEQ_B,两个表的主键都叫idnnnINSERT INTO A(id,aa)n(SELECT SEQ_A.nextval,B.aa FROM B)nnn不然会报错,id为NULL,插入失败
PHP基于Laravel中取B表中数据(集合)来更新A表数据(集合)
在实际项目中,我们会遇到同时更新数据库中某个表(下称表A)中的多条数据,而更新得内容则需要取自于另外一张表(下称表B),表A和表B都是从数据库中get方式取得的数据,在这种情况下我们可以这么做: // 根据商家Id查找出所有的商品信息    $goodsInfo = Goods::whereIn('shop_id', explode(',', $sidStr))->get();    ...
sql 获取新插入的id值的三种方法
最近在公司做demo时,遇到了sql server,获取表数据的刚刚插入的id值,经过查询sql提供了三种方法对最后插入的id进行查询:nn@@IDENTITYn ident_current(tablename)n SCOPE_IDENTITY()n注:使用时,可以as xxx,可以在下方rs.getString()shi使用nn三种区别如下:nn@@IDENTITY 得到的是跨域最新idnnid...
查询A表数据插入到B表中
---插入语句rnINSERT INTO DT_CK_CZRY_MX rn           select t.czy_dm ,t.czy_mc ,'','','','','','','','','','','','','2370193000005','行政服务大厅',''rn  from DT_CK_CZRY trn where t.dt_dm = '2370193000005'rn   an
【Oracle】两个表a、b,向a表中插入一条数据,但是 a表中的有一个字段是b表的主键
遇到问题:两个表啊a和b,我要向a表中插入一条数据,但是a表中的有一个字段是b表的主键nn解决方法:nn1.创建2个表:nnncreate table t1(a varchar2(30),b varchar2(30) );ncreate table t2(c varchar2(30),b varchar2(30) );nnnn2.向新建的t1表中增加数据nnnselect * from t1 fo...
业务需求:一张数据表中有自增字段,插入一条数据以后返回自增的ID值
数据表结构:数据表 t_test     n                      结构【  id   int    primary  key(自增)】n                              【name   varchar(25)    not    null】n实现方法目前想到两种:n      1.   INSERT INTO  T_TEST  (NAME)
服务器A (数据库表数据)导入数据至服务器B(数据库表数据)
--服务器A (数据库表数据)导入数据至服务器B(数据库表数据)nuse 服务器B(DB)ngoninsert into dbo.tablen--打开服务器数据库ACnexec sp_configure 'show advanced options',1nreconfigurenexec sp_configure 'Ad Hoc Distributed Queries',1nrec
SQL 统计表 b 对应表a个数,并赋值给表a的一个字段
最近遇到这么个问题nnn表a : 歌单表 music_listn表b : 歌曲详情表 music_detailnnn一个歌单对应多个歌曲详情,但在表的设计时,没有考虑到在 music_list 设置一个字段标记对应的 music_detail数据条数。在数据已经入库了之后,同事修改了功能需求。通过测试发现,如果每次使用的时候才在sql中统计歌单music_list 对应的歌曲详情music_det
表A与表B是一对多关系,取表B中任一记录与A关联查询
通过Group By + min方法取得表B中分组后的多条记录中某个字段(一般使用主键或者不重复的列)值最小的记录,然后表A和表B做外连接rnrn[code="sql"]rnselect a.id, a.namern from arn left join (select id, namern from brn inner join (sel...
将b表中的数据覆盖到a表中的sql(批量更新数据sql)
//b表为新数据表 a表为查询主表//找两个表中id相同的数据 并更新到a表中update a,b set a.sd=b.sbdb where a.id=b.id
更新 将B表的数据更新到A表中的某个字段的sql(根据条件)
update  A set FResponPositionID=(select FResponPositionID from B where A.funitid=B.fid rn and B.fisleaf=1 and B.FIsOUSealUp=0 and   B.FResponPositionID rnrnrn实际过程中:rn将T_ORG_OUPartAdmin表中的FResponPositi
查询A表的某个字段在B表中的所有数量
查询A表的某个字段在B表中的所有数量n– 查询群表zc_chat_group 的classCode对应量表zc_user_flow 的chat_code有多少nUPDATE zc_chat_group `group` INNER JOIN(nSELECT n c.counts AS sums,nchat.class_codenFROMn zc_chat_group chatnLEFT JOIN(n...
mysql用存储过程写入 一个表A中没有存在在另一个表B的数据
需求rnAbiaonid contentn1 sfsdfsgn2 ddsgffdn3 gfgggn4 dggfhfdnnBbiao nnid nn2n3nn那么我要查询到Abiao 里面在Bbiao没有的数据n(理想结果)就是:nid contentn1 sfsdfsgn4 dggfhfdr
把A表的某字段值赋B表中的某字段
CREATE TABLE zhtt_arn(rna VARCHAR2(10),b VARCHAR2(10)rn);rnCREATE TABLE zhtt_brn(rna VARCHAR2(10),b VARCHAR2(10)rn);rninsert into zhtt_a values('1','1');rninsert into zhtt_a values('12','12');rninsert
五奥环Java面试题
SQL部分 1. 表a和表b结构相同,indexid为主键,在表b中插入表a有,但是表b中没有的数据
sql复杂查询:A表与B表一对多,查询A表所有用户对应B表中的数据,去除B表中的日期最大值
直接上sql:SELECT n l.*FROM n Users u, n Location l nWHERE n u.id = l.Userid nAND l.[time] = ( n SELECT n MAX ([Time]) n FROM n Location n WHERE n UserId = l.Useri
sql 中如何将A表的数据更新到B表中,数据表备份语句
表A  sheet1$,表B  T_DICT,要利用表A的数据更新表B中关联的数据:rnrnrnUPDATE T_DICT SET BASYBM0= sheet1$.病案费用编码 FROM sheet1$ WHERE sheet1$.病案费用名称=t_dict.BASYMC0 AND KIND='项目'rnrnrn将表t_dict备份为t_dictbackrnselect * into t_dic
Mysql的 A表一个字段里的多个值对应多个B表内的内容,学习
A表nnnnn字段1n字段Bnnnnn安安n1,2,3nnn哈哈n4,5,6nnn嗯嗯n2nnnB表nnnnn字段1n字段Bnnnnn1n吃nnn2n喝nnn3n睡nnn4n玩nnn5n蹦nnn6n跳nnn要Mysql要怎么写能实现查询结果如下,主要想请教的是怎么通过A表字段B里的值来去B表找nnnnnnnnnnn安安n吃,喝,睡nnn哈哈n玩蹦跳nnn嗯嗯n喝nnnn...
求出A表中的字段不等于B表中的字段
SELECTn*nFROMn    test_copynWHEREn    area_name NOT IN (n        SELECTn            name2n        FROMn            yt_baseinfo AS basen        n    ) 
Oracle数据库分批次向A表中插入B表中数据
n业务简介:A表是B表的明细表,现需求是B表有上百万记录,在A表中插入B表的相关记录。n准备工作:oracle数据库,数据库工具pl\sql,存储过程写在包中。n实现思路: n3.1 获取B表总数据量V_CU_COUNT,设置一次提交量V_SIZE为5000,计算出总页数V_PAGE := CEIL(V_CU_COUNT / V_SIZE);,起始索引V_INDEX为1; n3.2 每5000条数...
ORACLE多表查询保存到新表,添加id自增触发器
先把需求明确一下,这次需要从其他两个表(T1,T2)中查询数据,将其中两个字段相同的数据插入到另一张表中(T3),T3的id为主键不能为空由于使用的是oracle,不能把T3的id设置成自增长就多出许多麻烦为了解决oracle序列自增长的问题  采用了触发器触发序列自增长的方式来解决1.首先创建一条自增长的序列,开始于1,每次增长1CREATE SEQUENCE TOOLS_GRP_ID STAR...
mysql 查询a表的某字段 大于 b表中a.id=b.id的条目数
描述:A,B两表 1对多 关系,A中有个字符串字段type,要判断type的第6位,大于 B表中 符合A.id=B.id的数据条目数。rn两种写法:rnSELECT DISTINCT(r1.id),r1.play_type_str,SUBSTRING(r1.play_type_str, 6,1)rnFROM recommend_lottery r1 LEFT JOIN recommend_clas
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 物联网表价格 java学习表