0

こんにちは、私はここではまったくの初心者です。私がやろうとしているのは、データ (スキル) 列をある一時テーブルから id=1 の別のテーブルにコピーしようとしていることです。

現在、skillmapping というテーブル 1 には、candidateId 列と skillName 列があります。

Table2 には skillName 列しかありません

テーブル 2 から canidateId=1 のテーブル 1 にデータを挿入しようとしています。

これで私を助けてください。データをコピーしようとしましたが、候補IDのエラーのようです..ありがとう。

これを試しましたが、構文が正しくないと表示されます

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

すべての回答に感謝します。両方のテーブルの列は同じである必要があると思います。つまり、両方に id と skillName が必要であり、コピーできるのは私たちだけです..とにかくありがとう、

4

4 に答える 4

0

あなたtable2は候補 ID を持っていないので、挿入の時点で、 に含まれるすべてのスキルがtable2候補 ID = 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 に答える