首页 > 解决方案 > 如何更新 SQL Server 中的 Bridge 表?

问题描述

我有三张桌子tblSubjecttblSubjectGrouptblSubjectGroupDetails

tblSubject表具有以下列:

subId (PK, char(36), not null)
subName (varchar(50), not null) 

tblSubjectGroup表有这些列:

subGroupId (PK, char(36), not null)
subGroupName (varchar(50), not null)

tblSubjectGroupDetails是上述多对多关系表之间的桥接表:

subGroupId (FK, char(36), not null)
subId (FK, char(36), not null)

我在这些表中放置了以下虚拟数据:

tbl主题

英语、数学、物理、化学、科学、生物学、经济学、地理、历史

tblSubjectGroup

组 1、组 2、组 3

在这里,我想Group2用这些主题更新:Geography, History, Science.

(插入和删除对我来说很好,但我不知道如何更新桥接表)

UPDATE tblSubjectGroupDetails 
SET subId = '......' 
WHERE subGroupId = '......'

上述声明将更改特定主题组的所有主题。我只想将 Group2 的经济学改为科学。

顺便说一句,我忘了提到它tblSubjectGroupDetails有一个复合主键。

如何在 SQL Server 中执行此操作?

标签: sqlsql-servermany-to-manyupdate-statement

解决方案


我只想将 Group2 的经济学改为科学。

您的 where 子句中需要另一个条件,如下所示:

UPDATE tblSubjectGroupDetails SET subId = science_id
WHERE subGroupId = group_2_id
  and subId = economics_id;

只需用正确的值替换 ID。

当然,如果您的 Group2 在该表中已经有一个科学主题记录,这将不起作用(将生成主键约束违规)。


推荐阅读