【发布时间】:2013-12-11 18:32:51
【问题描述】:
我正在使用具有 3 个表的数据库,其中一个是 skill 表,另一个是 experience,第三个是 Experience_skill 此表中的表我有外键现在问题是两个外键也是主键。假设我将数据存储到技能表以及经验表中,如何在Experience_skill 表中插入两个键数据。我尝试了以下查询。
insert into Experience_skill(eid, Skill_Id)
select eid
from Experience
where eid=2
union
select Skill_Id
from Skills
where Skill_Id=2
我得到的错误:
INSERT 语句的选择列表包含的项目少于插入列表。 SELECT 值的数量必须与 INSERT 列的数量相匹配。 比我试过这个。
insert into Experience_skill(eid)select eid from Experience where eid=2
它给了我这个错误:
无法将值 NULL 插入到列“Skill_Id”、表“resume.dbo.Experience_skill”中;列不允许空值。插入失败。 请帮帮我 这是表的快照第一个快照是技能表
第二个是经验表
这个是EXperience_skill 表,我有我的外键
【问题讨论】:
-
请为您的表提供 DDL。
-
我不认为 union 是你在这里寻找的。您需要在选择中指定与插入中一样多的列
-
在插入中您说您将提供 eid 和 Skill_Id.. 但是您的选择仅提供其中之一。
-
我不知道我第一次遇到这种问题
-
另外,您正在尝试插入 eid 和 Skill_id,但您在 where 子句中同时提供了它们......换句话说......你已经有了你想要的东西。
标签: sql sql-server