Sql 无法将数据从一个表复制到id=1的另一个表

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

嘿,伙计们,我是个新手,我想做的是 将数据列从一个临时表复制到id=1的另一个表

现在,名为skillmapping的表1有candidateId和skillName列

表2只有skillName列

我正在尝试将表2中的数据插入到canidateId=1的表1中

请帮我做这个。我尝试复制数据,但对于candidateId似乎是错误的。。 谢谢

我试过了,但说的语法不正确

 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