0

嘿伙计们,我是这里的新手,我想做的是我试图将数据(技能)列从一个临时表复制到另一个 id=1 的表;

现在表一称为技能映射有candidateId 和skillName 列

Table2 只有 SkillName 列

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

请帮我解决一下这个。我尝试复制数据,但对于候选 ID 来说似乎是错误的 .. 谢谢。

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

 insert into candidateComputerSkillMapping(skillname) values(select * from tempComputerSkillMap)

感谢所有答案的家伙,我猜两个表上的列应该是相同的,我的意思是两者都应该有一个 id 和 SkillName 然后只有我们可以复制权利.. 无论如何,谢谢,

4

4 回答 4

1

尝试进行如下查询

INSERT INTO candidateComputerSkillMapping (skillName)
SELECT skillName
FROM tempComputerSkillMap
WHERE candidateId=1;

或者

INSERT INTO candidateComputerSkillMapping
SELECT skillName
FROM tempComputerSkillMap
WHERE candidateId=1;

检查sqlauthority

如果candidateIdcandidateComputerSkillMapping表中,primaryid那么您不能插入null主键,它会给出错误。这就是为什么显示这两个表结构以获得好的答案。

希望它有效。

于 2013-05-30T06:12:57.493 回答
0
INSERT INTO [Table2] SELECT skillName FROM [skillmapping] WHERE candidateId = 1
于 2013-05-30T06:09:41.127 回答
0

如果您认为数据已经存在并且需要更新它,那么...

update Table2 set skillname = (select skillname from Table1 where candidateid =1)

如果你认为你需要插入新记录,那么......

insert into Table2 select skillname from Table1 where candidateid = 1
于 2013-05-30T06:11:49.203 回答
0

由于您table2没有candidateid,我假设在插入时,您确定其中包含的所有技能都table2属于candidateid = 1。

如果假设正确,那么您可以按照下面的示例将新技能从 中table2插入table1

编辑:用评论更新了查询。

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
于 2013-05-30T06:23:22.557 回答