sql - 如何更新 SQL Server 中的 Bridge 表?
问题描述
我有三张桌子tblSubject
,tblSubjectGroup
和tblSubjectGroupDetails
。
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
Group1
链接到English, Mathematics and Biology
Group2
链接到Geography, History and Economics
Group3
链接到Physics, Chemistry and Science
在这里,我想Group2
用这些主题更新:Geography, History, Science.
(插入和删除对我来说很好,但我不知道如何更新桥接表)
UPDATE tblSubjectGroupDetails
SET subId = '......'
WHERE subGroupId = '......'
上述声明将更改特定主题组的所有主题。我只想将 Group2 的经济学改为科学。
顺便说一句,我忘了提到它tblSubjectGroupDetails
有一个复合主键。
如何在 SQL Server 中执行此操作?
解决方案
我只想将 Group2 的经济学改为科学。
您的 where 子句中需要另一个条件,如下所示:
UPDATE tblSubjectGroupDetails SET subId = science_id
WHERE subGroupId = group_2_id
and subId = economics_id;
只需用正确的值替换 ID。
当然,如果您的 Group2 在该表中已经有一个科学主题记录,这将不起作用(将生成主键约束违规)。
推荐阅读
- apache - 如何解决此 https 问题?
- mysql - 同一列MySQL中具有2个条件的多行
- c# - 错误:一个表不能与 Interop.Excel c# 中的另一个表重叠
- java - POI 3.9 如何使用 ooxml-schemas-1.1 修复标头中的 xml 解析错误?
- amazon-web-services - 从远程文件访问 terraform 变量
- java - IO 错误:将 oracle DB 作为 docker 容器运行时,网络适配器无法建立连接
- delphi - 使用多个 Firebird 实例进行 FireDac 还原
- notepad++ - Notepad++ - 如何找到不以字符串开头的行并将其合并到上一行?
- javascript - addEventListener 在 init (IE) 上不起作用?
- python - 在 Apache 2.4 Web 服务器上运行 Python 3 脚本