如何匹配主键和外键的值?

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

【讨论】:

以上是关于如何匹配主键和外键的值?的主要内容,如果未能解决你的问题,请参考以下文章

主键和外键的作用

什么是主键和外键?

在MySQL中如何设置主键和外键

数据库里面的主键和外键及候选键是啥意思啊?

如何在 Clickhouse 中使用主键和外键的功能?

数据库中主键和外键的作用?