sql - 根据三个单独表中的数据更新字段值
问题描述
我一直在尝试根据两个字段(名称,日期)中单独表(a)中的相应数据,当两者的组合出现在那个单独的小桌子。我遇到的问题是“名称”字段来自两个单独的系统并且不匹配,但是我有第三个“翻译”表 (t),它应该允许 1:many 关系来帮助限定名称差异. 所以基本上我想在调整名称后使用表 a 数据来驱动 g 表中的更新,所以我想我需要一个 LEFT JOIN,但无法让它正常工作。
最后一次尝试看起来像:
UPDATE g
SET [IsException] = 1 WHERE EXISTS
(SELECT 1 FROM a
WHERE g.Date = a.Date
AND (LEFT JOIN t ON a.Name = t.Aname) t.Gname = g.Name)
表中的示例数据看起来有点像:
a
Name Date
Tom 2021-03-01
Sue 2021-02-28
g
Name Date IsException
TomT 2021-02-28 0
TomT 2021-03-01 0
SueS 2021-02-28 0
SueS 2021-03-01 0
BobB 2021-02-28 0
BobB 2021-03-01 0
t
AName GName
Tom TomT
Sue SueS
Bob BobB
因此,目标是让表 g 中的第二行和第三行将 IsException 标志字段从 0 更新为 1。
我已经盯着 UPDATE 和 JOIN 语法看了好几个小时,并仔细研究了其他类似的查询,但无法让它按预期工作。任何正确方向的观点都将不胜感激。
解决方案
这不只是 2 个内部连接的简单案例吗?
UPDATE G SET
IsException = 1
FROM G
INNER JOIN T on T.GName = G.[Name]
INNER JOIN A on A.[Name] = T.AName
WHERE A.[Date] = G.[Date];
推荐阅读
- javascript - JavaScript 数组未显示更新的元素
- git - 吉特。关于使用 git rebase 进行本地清理的问题
- swiftui - SwiftUI:如何从 OutlineGroup 中获取选择?
- c++ - free():invalid size,但没有调用 new() 或 free() - 使用 C++ 的 SQLite3
- reactjs - React-redux mapStateToProps 和 mapDispatchToProps 不起作用
- javascript - 如何避免多次写 this.spinner = false ?
- c# - Quaternion.Euler 旋转错误的轴
- sql - SQL 获取组号
- css - 如何将 CSS 应用于被 Wordpress 反垃圾邮件功能混淆的电子邮件地址?
- css - 无论什么设备或分辨率大小,如何将图像固定到屏幕底部