Sql 无法将数据从一个表复制到id=1的另一个表
嘿,伙计们,我是个新手,我想做的是 将数据列从一个临时表复制到id=1的另一个表 现在,名为skillmapping的表1有candidateId和skillName列 表2只有skillName列 我正在尝试将表2中的数据插入到canidateId=1的表1中 请帮我做这个。我尝试复制数据,但对于candidateId似乎是错误的。。 谢谢 我试过了,但说的语法不正确Sql 无法将数据从一个表复制到id=1的另一个表,sql,tsql,Sql,Tsql,嘿,伙计们,我是个新手,我想做的是 将数据列从一个临时表复制到id=1的另一个表 现在,名为skillmapping的表1有candidateId和skillName列 表2只有skillName列 我正在尝试将表2中的数据插入到canidateId=1的表1中 请帮我做这个。我尝试复制数据,但对于candidateId似乎是错误的。。 谢谢 我试过了,但说的语法不正确 insert into candidateComputerSkillMapping(skillname) values(se
insert into candidateComputerSkillMapping(skillname) values(select * from tempComputerSkillMap)
感谢所有的答案,伙计们,我想两个表上的列应该是相同的,我的意思是两个表都应该有一个id和skillName,这样只有我们才能正确复制。。无论如何,谢谢,如果您认为数据已经存在并且需要更新,那么
update Table2 set skillname = (select skillname from Table1 where candidateid =1)
如果您认为需要插入新记录,则
insert into Table2 select skillname from Table1 where candidateid = 1
试着像这样做一个查询
INSERT INTO candidateComputerSkillMapping (skillName)
SELECT skillName
FROM tempComputerSkillMap
WHERE candidateId=1;
或
检查
若candidateComputerSkillMapping表中的candidateId为primaryid,那个么您不能将null插入主键,它将给出错误。这就是为什么要显示这两个表的结构以获得好的答案
希望它能起作用。由于您的表2中没有candidateid,我假设在插入时,您确定表2中包含的所有技能都属于candidateid=1
如果假设是正确的,那么您可以按照下面的示例将表2中的新技能插入表1
编辑:用注释更新查询
它表示错误列名或提供的值数量与表定义不匹配。我猜是因为我在skillmapping表上没有candidateId。。还有别的办法吗。谢谢你说你的技能映射表上有candidateId。我理解错了吗?插入到表2中从表1中选择skillname,其中candidateid=1您的插入查询错误,而不是从tempComputerSkillMap中选择*from tempComputerSkillMap尝试使用select skillname from tempComputerSkillMap,因为您不想在表candidateComputerSkillMapping中仅插入skillname值..希望您理解,*表示所有列..插入candidateComputerSkillMapping从tempComputerSkillMap中选择skillName,其中candidateid=1应起作用。请发布您的创建表脚本这并不重要,两个表应该是相同的,我的意思是两个表都应该有一个id和skillName,然后只有我们才能正确复制。实际上,如果您的id是主键,那么它将产生问题,因为插入时您不能将null值分配给主键,否则这无关紧要。列名或编号提供的值的个数与表定义不匹配。这是错误。试试看。。。在表2中插入skillname值从表1中选择skillname,其中candidateid=1@PavanKumarK您的查询应该可以插入到表2中,从表1中选择skillname,其中candidateid=1是Pavan的错误查询,我也试过了,但它说插入候选ComputerSkillMappingSkillName值select*from的语法不正确tempComputerSkillMap@designerNProgrammer您可以发布表脚本吗?亲爱的,您想将表2数据插入表1或将表1数据插入表2..我正在尝试将数据从表2插入表1,问题是表2仅包含skillname,我想将该数据添加到表1中,其中skillId=1。这很混乱,请详细告诉我。如果您希望得到更有针对性的回答,请使用表定义和示例数据更新您的问题。
INSERT INTO candidateComputerSkillMapping (skillName)
SELECT skillName
FROM tempComputerSkillMap
WHERE candidateId=1;
INSERT INTO candidateComputerSkillMapping
SELECT skillName
FROM tempComputerSkillMap
WHERE candidateId=1;
use tempdb
-- Pretending this is your table1
create table candidateComputerSkillMapping
(
candidateid int not null
, skillname varchar(128) not null
, unique
(
candidateid
, skillname
)
)
-- Table1 has one skill for candidateid = 1
insert candidateComputerSkillMapping values (1, 'Old Skill')
-- Prentending this is your table2
create table tempComputerSkillMap
(
skillname varchar(128) not null
)
-- table2 has two skills. Now since this table doesn't have candidateid, how do I know the skills are for candidateid = 1?
-- I don't know and I am assuming that you are certain that these skills indeed belong to candidateid = 1.
insert tempComputerSkillMap values ('Old skill')
insert tempComputerSkillMap values ('New skill')
-- Insert only new skills from table2 into table1 for candidateid = 1
insert candidateComputerSkillMapping (candidateid, skillname)
select 1, t2.skillname
from tempComputerSkillMap t2
where not exists (select * from candidateComputerSkillMapping t1 where t1.candidateid = 1 and t1.skillname = t2.skillname)
select * from candidateComputerSkillMapping