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

5个回答

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

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的对照记录到一个临时表中
  • 全部插入完以后,显示临时表
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 年多之前 回复

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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
表A 对应 表B ,
表A 对应 表B ,表A需要对应表B的多个ID号,rn请问,,rn在表A里生成多条记录好rn还是A里用一个列把B的多个ID放在一个字段里用逗号分隔好???rnrnrn请说明理由 rnThanks.
表A有ID和名称,表B有表A的ID,表B新增表A名称,如何根据表A的ID同步名称?
有一个【用户表】,里面有【用户ID】和【用户名称】,rn还有一个【记录表】,里面有【记录ID】、【用户ID】、【其他数据】,rn现在在记录表里新增了【用户名称】字段,加完后【用户名称】值为空,rn【用户名称】字段的值需要和已存在的【用户ID】对应起来。rn请问该怎么写SQL语句才能实现?rn希望大神帮帮忙。rn描述有不清楚的地方,可以再问。谢谢各位了。
表B,插入表A,的难题
表a有abcd三列rn写sql语句rn从表B中查询出ef两列插入表A的ab两列中,rnc列的值为固定的一个字符串"aa"rnd列是一个int型,从1开始由小到大排序rnrn表A已存在数据, d列并未设置标识列。rn每天执行一次,d插入每条自动+1rn
表A的数据插入到表B中
我需要把表A的数据(xm,gh,jz,la)插入到表B(xm,gh,jz,la)。rn请问如何实现呢?
表A数据插入 表B,
我建了个 虚拟表 #Tablernrninsert into A表(字段1,字段2,字段3) rn values(select 字段1,字段2,字段3 from #Table)rnrnrn提示rn消息 156,级别 15,状态 1,过程XX,第 13 行rn关键字 'select' 附近有语法错误。rn消息 102,级别 15,状态 1,过程XX,第 13 行rn')' 附近有语法错误。
如何做到a表的id=b表的id
a 表 comid comName ComEmail rn 0 a brn 1 a1 b1 rn 2 a2 b2rn 3 a3 b3rnrnb 表 givejobid comid workpostion worcityrn 0 0 c d -----a发布的记录rn 1 0 c1 d1 -----a发布的记录 rn 2 1 c2 d2 -----a1发布的记录rn 3 3 c3 d3 ------a3发布的记录rn 4 2 c4 d4 --------a2发布的记录
表B 表A
表 A( rnA_ID INT,rnA_SUM DECIMAL)rn表 B(rnB_ID INT,rnB_detail DECIMAL)rnA中假如数据为 A_ID A_SUM ,B中的数据为 B_ID B_detailrn 1 0 1 34rn 2 0 1 56 rn 3 0 1 10rn 2 74rn 2 49rn 3 37rn 3 26rn 3 65rn 3 23rn现在想B中根据B_ID 分组后累加B_detail,在把这个累加的值 赋给与B_ID相同 A_ID的A_SUM值。rn例如为B表中B_ID 为1的B_detail累加后为100,再把这个100的累加值赋给表A中A_ID=1(ID值和B_ID相同), 的A_SUM.另外SUM()函数返回的是INT型的,B_detail是decimal型的,A_SUM的值最后我想要的也是decimal型的。求语句,。。。
如何将数据插入到a和b表中,并且把a表的索引id插入到b表的opetateid的字段里
有两个表rna: id name phonernb: id operateid addressrnrn如何将数据插入到a和b表中,并且把a表的索引id插入到b表的opetateid的字段里
SQLSERVER 表A某列数据插入B表
**strong text** rn例如:rn表tableA:rn A B C D E F --列名rn 1 2 3 4 5 6 rn 1 7 9 8 5 6rn 1 10 11 12 5 6rn表tableB:rn H I J k L M --列名rn rn我想把taleA 表中的BCD列数据提取出来 插入tableB 中 HIJ三列中形成新的一条数据。由于tableA中数据比较多,我想循环搜索和插入,请教如何实现。
A表和B表产生笛卡尔积插入C表
RT,A表一个字段,B表一个字段,C表两个字段是A表和B表的,将A表和B表的产生的笛卡尔积一次性插入C表
A表B表插入C表的SQL问题
问题如上,假如A,B,C表结构都不一样怎么办?
A表和B表的查询!
现有用户表A,有5个字段id, phone1,phone2,phone3,phone4,其中id 为主键,phone1不能为 null,其余3个可以为nullrn 通话记录表B,其中有个字段 guest_phone为客户电话,可能为phone1,phone2,phone3,phone4中的任一个rn 现有需求要查出某个用户的所有通话记录,该如何写呢?想了好久了.rn 用的是mysql数据库
B表如何通过ID查询A表的varchar数据?
A表ID,name(VARCHAR),B表ID,nameid(INT),B表的NAMEID如何显示A表的NAME啊?rnrnrn$result = mysql_query("SELECT name FROM a WHERE ID (SELECT nameid FROM b);",$con);rnrnwhile($row = mysql_fetch_array($result))rn rn echo "";rn echo "" . $row['name'] . "";rn echo "";rn rnrnWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in rn
a表更新B表
我有两个表的结构和数据如下:rn表一:rn订单号 产品编号 物料编号 库存数rn0001 1254 11212 0rn0001 1254 11213 0rn0001 1254 11257 0rnrn表二:rn订单号 产品编号 物料编号 库存数rn0001 1254 11212 9rn0001 1254 11213 50rnrn我想要的结果是:rn用一条查询语句得到如下结果rnrn订单号 产品编号 物料编号 库存数rn0001 1254 11212 9rn0001 1254 11213 50rn0001 1254 11257 0rn即,以订单号,产品编号,物料编号为关键字,用表二的库存去更新表一的库存数,表二中不存在的数据表一的库存数自动为0.rn请教哪位高人,这句查询SQL应该如何写,怎么写速度更快???rn
求触发器写法!在a表 和b表 发生变化后(a,b,c 表结构一样),在c表也插入对应数据
求触发器写法!在a表 和b表 发生变化后(a,b,c 表结构一样),在c表也插入对应数据
先插A表数据 得到A表自增ID 然后插入到B 表 如何实现
如题 我有 A 表 B 表 rnrnINSERT INTO A表 (name)VALUES('aaa');rnSELECT @@IDENTITY rn到此为止 我获得了 之前一次insert 的 自增ID 值 rn我要在此基础上 插入B 表 把刚刚得到的 id 值 再插入B 表如何写 rninsert into B 表 (ID ) values ( 刚刚获得的id值)
查询表A内容 加上ID插入表B
表A内容 :rnname,typern表B内容 id,name,type;rn现在想把表A内容查询出来,再把表A的内容加上id插入表B
如何把A表的部分数据插入到B表中
Mysql 如何A表数据部分数据(如name)在添加B表数据的时候等于B表的name字段同时插入在B表中(A表name字段有多少个,在B表就插入多少行)rn我只查到这些 不懂rninsert into playermail values('1',SELECT PlayerID FROM playerinfo , 0, 0, 0, 0, 0, 0, 0)
如何读取a表的数据插入到b表
如题!rnrninsert into Cart (productName,productModel) values(select productName,productModel from product where productId='00002')rnrn我是这样写的,但就是不对
关于两表的查询,条件1表a中的id对应表b的id,或表a的cid=2
select a.* from a,b, where (a.id=b.id and b.cid=123) or b.cid=321rn查询出来重复记录,且有个字段ntext不能distinct
表A的某列值如何循环插入表B?
表TrnTid(Varchar) Tname rn 1F2C 1Trn E366 2Trnrn表WrnWid(Varchar) Tid Wname rn 56FE 1Trn 44EB 2Trn rn想要的结果:rnWid(Varchar) Tid Wname rn 56FE 1F2C 1Trn 44EB E366 2Trnrn根据表W的Wname和表T的Tname相等为条件,请教如何将表T的Tid 插入表W的Tid呢?
复杂查询A表一对多B表,查询a表对应的b表日期最大值
SELECT * FROM ( SELECT l.Address, u.id, l.Lat, l.Log, u.Account, ui.Name, u.State, row_nu
a,b两个表进行比较,把b表中不重复的行插入a表.
[code=SQL]create table arn(rnid int ,rnname varchar(10)rn)rninsert into arnvalues(1,'bill')rninsert into arnvalues(1,'bill')rnrncreate table brn(rnid int ,rnname varchar(10)rn)rninsert into brnvalues(1,'bill')rninsert into brnvalues(1,'bill')rninsert into brnvalues(2,'amount')rninsert into brnvalues(3,'rose')rnrnrnselect * from arnselect * from brn[/code]
把表B中的记录插入到表A,A,B表字段不一定相同
语言vb,数据库SQL server,把表B中的记录插入到表A,以表A的字段为准,若B表中的字段比A表多则B表中多余的字段不能插入,若B表中的字段少于A表则少的字段为空,请问这条SQL语句该如何写,谢谢!
查询两个表,根据A表ID字段查出B表有A表记录个数
如题rn查询两个表,根据A表ID字段查出B表有A表记录个数
查询A表数据插入到B表中
---插入语句 INSERT INTO DT_CK_CZRY_MX             select t.czy_dm ,t.czy_mc ,'','','','','','','','','','','','','2370193000005','行政服务大厅',''   from DT_CK_CZRY t  where t.dt_dm = '2370193000005'    an
查询A表数据插入到B表
A表和B表有相同的字段c,d,e (c为主键)现在将c作为查询条件查询表A中d,e子段的数据并插入到B表中。请问SQL语句应该怎么写,谢谢!
mysql 将A表数据插入到B表
INSERT语句可以将一个表中查询到的数据插入到另一个表中,基本语法实现:INSERT INTO 被插入表名(字段名列表1) SELECT 字段名列表2 FROM 查询表名 WHERE 条件表达式示例:1.创建insertBook表用来从books表获得数据并插入。以下是books表内容:2.使用命令出现如下错误:where后面使用的字段必须在select后面有提及!!这里bkPrice没有在s
A表和B表格式相同,想把A表中不同于B表中的数据插入B表。相同的不变。
A表和B表格式相同,想把A表中不同于B表中的数据插入B表。相同的不变。rnrn格式。rnrnA:ID,(自动累加),name, telrnrnB:ID,(自动累加), name, telrnrn我用rnrninsert into b (name,tel)rnselect b.name,b.telrnfrom brnrn可是相同数据的不允许插入。rnrn请问应怎么写这个语句。rnrnrn
oracle 取A表的数据,关联B表的id最小值
1.先关联出数据作为临时表a,取出最小值,然后将剩余的行数去掉最小值的行,即可 with a as (SELECT A.cus_No FROM A , B where B.rel_org_no(+)=A.cus_no and t.Stop_Flag='N' ) SELECT a.* from a where usr_id in (select min(usr_Id) f...
向B表插入A表有而B表无的数据;更新A表数据到B表
  两个excel表 ,18日数据表和19日数据表. 并有两个要求:  1. 18日表中的记录,如果在19日表中不存在,则将18日表中的此记录插入19日表2. 18日表中标注了充值人的记录,用来替换19日表中的相同记录 分别把两个excel中的数据通过navicat中的"导入向导"导入到mysql中我新建的两张临时表temp3和temp4. 18日数据对应temp3; 19日数据对应...
A,B表对比以后怎么把A表没有B表有的数据插入到A表中去
conn.execute("insert into a (customer,address) values ('"&b.customer&"','"&b.address&"') from net a inner join net_xf b on b.customer not in (select customer from net)")rn---------------------------------------------------------------------rn上面是我写的, 可不知道为什么不能成功,麻烦哪为朋友帮助改一下
a表id,name,b表bid,b表有重复的bid,如何得到a表中的id,name和b表中不重复的bid?
如标题
两个格式不同的表,A表,B表,如何将B表的内容插入A表,,并能通过视图C看到
A表:rnID int rnNAME varcharrnsex varcharrnB表:rnID intrnDATA varcharrnNAME varcharrnCLASS VarcharrnGrade Varcharrnteachwer Varcharrnrn如何用存储过程实现B表内容插入A表,并能通过视图C看到。有劳了
如何通过表a得到表b
[img=https://img-bbs.csdn.net/upload/201309/09/1378692687_362397.jpg][/img]rnrn就是把每个人对应的课程用逗号连起来,求指教谢谢
sql优化 a表中某字段存储b表多个id如何查询a表及b表
举例:rna表中有 id,b_ids,title 三个字段(b_id中有多个id并以逗号隔开)rnb表中有 id,name 两个字段rnrn如何查询a.title 和 a表中的该行数据所关联的多个b.namern之前一直用 rnselect b_ids,title from a where id = 1;rnselect name from b in(b_ids);rn发现效率很低rnrn曾想过如下方法rn新建c表 a_id,b_id 两个字段rn存储结构如下rn_________rn|a_id | b_id|rn|1 | 2 |rn|1 | 3 |rn|2 | 4 |rn|2 | 5 |rnrnselect title from a where id = 1;rnselect name from b where exists(select b_id from c where a_id=1) rn希望前辈能有其他更好的解决办法(可从新设计表结构)
A表 B表 C表 关系维护问题
我现在有三张表A B C rnA—B 属于一对一 B—C属于一对多rnrn现在只配置单向关联rn 双向关联需要代码来维护!rnrn这三张表怎样来用代码进行维护?rnrnrn例如:rn 注意:rn CgQuaInsStaCompect 主表rnCgQualityFees 子表rnCgPortFees 子表rn这段代码属于两张表之间的维护,而且还是多对一维护rn 我现在需要三张表之间维护,而且是一对多维护rnrn private void manyToOne(CgQuaInsStaCompect src, CgQuaInsStaCompect target)rn//质监站 合同维护rnif(ContractCommonUtil.CONTRACT_ZJZ.equals(src.getCompactTypeCode()))rnrnfor(CgQualityFees cgQualityFees : src.getCgQualityFeeses())rnrncgQualityFees.setCgQuaInsStaCompect(target);rnrn//港口作业合同维护rnelse if(ContractCommonUtil.CONTRACT_GKZY.equals(src.getCompactTypeCode()))rnfor(CgPortFees cgPortFees : src.getCgPortFeeses())rnrncgPortFees.setCgQuaInsStaCompect(target);rnrnrnrnrnrn在这里跪求大虾!TKS 在线等!
排除A,B表.
A表rnrnID STRA CREATTIMErn1 AA 2010-08-01rn2 BB 2010-08-02rn2 BC 2010-08-03rnrnB表rnrnID STRB CREATTIMErn1 FFX AA XXX 2010-08-01rn2 XXX BB EEE 2010-08-02rn2 CCC BD EE1 2010-08-03rnrn求A表中STRA的值不在B表中STRB出现的字段.rn2 BC 2010-08-01rnrnrnrnrnrn
B表改动后如何更新到A表中
A表 rnType_Id rnsingle_hoursrnsum_hours rnrnB表 rnBulb_Id(自动编号) rnType_Id rnsingle_hours rnrnA表对应于B表的多条记录,两者的关系用Type_Id连接,rn想实现的功能是:rn从B表中将具有相同Type_id的single_hours求和,然后把求得的和将A表中的sum_hours更新,同时将B表相同Type_Id中的最后一条记录中的single_hours的值更新到具有相同Type_Id的A表的single_hours字段中,sql语句应该怎么写(不用存储过程和触发,简单语句即可,能在一条语句里面实现就更好了)rn
怎样将表B的数据插入到表A中??/////
表A中有列ID,PWD,NAME,表B中有列ID1,PWD1,NAME1,表A中有数据,表B没有数据,如何将表A中的数据插入到表B中。
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池