如何匹配主键和外键的值?
Posted
技术标签:
【中文标题】如何匹配主键和外键的值?【英文标题】:How to match values of primary key and foreign key? 【发布时间】:2016-09-24 08:57:16 【问题描述】:我在匹配名为“Course”的表中的主列的值和名为“Curriculum”的另一个表中的外键时遇到问题。我在sql server中的表是这样的
COURSE TABLE
CourseID | CourseName | CourseCode
----------------------------------
8 | IT | 62345
9 | BA | 64738
10 | IS | 62341
CURRICULUM TABLE
CourseCode | CurriculumID | CourseID
----------------------------------------
62345 | 87 | 4
64738 | 98 | 5
62341 | 78 | 6
这些值是在我使用 asp.net 制作的网站中导入的。我在那里上传了 csv 文件,然后它将被添加到数据库中,之后我得到了这些值,并且似乎主键和外键不匹配。我需要一个匹配这两列的查询。请帮忙。我需要我的课程表如下所示:
CURRICULUM TABLE
CourseCode | CurriculumID | CourseID
----------------------------------------
62345 | 87 | 8
64738 | 98 | 9
62341 | 78 | 10
【问题讨论】:
根据什么条件更新CURRICULAM表中的CourseID? 我还不太确定。我正在考虑向两个相同的表添加另一列。然后从那里,如果这两个表具有相同的值,它也应该具有相同的 courseid?我真的不知道如何解决这个问题。 @UnnikrishnanR 你检查了 csv 文件吗?我认为旧的 courseID 映射将存在于 csv.. 哦,我需要做一个sql查询来更新外键以匹配主键。但我不知道该怎么做。 @UnnikrishnanR 如果没有公共键或匹配元素,我们无法理想地执行此更新。 【参考方案1】:如果您在两个表中都有课程代码,您可以使用以下脚本。
UPDATE cu
SET cu.CourseID=c.CourseID
FROM Course c
JOIN CURRICULUM cu ON c.CourseCode=cu.CourseCode
【讨论】:
以上是关于如何匹配主键和外键的值?的主要内容,如果未能解决你的问题,请参考以下文章