我正在使用SQL查询来更新具有来自不同表的Id的列值
实施例
Organization Table
Id Name
1 AA
2 BB
Events Table
Id Name OrgId
1 AA NULL
2 AA NULL
3 BB NULL
现在,我想更新事件表的OrgId及其各自的ID来自组织表
我确实尝试了以下查询,但我已明确为每个组织执行此操作
UPDATE Event SET OrId=
(SELECT DISTINCT O.ID FROM Organization O WHERE O.Name='AA') WHERE Name='AA'
我可以自动了解更好的方法吗?
答案 0 :(得分:1)
使用join
:
update e
set orid = o.id
from event e join
organization o
on o.name = e.tenant;
答案 1 :(得分:1)
您可以使用
执行合并MERGE Event AS e
USING Organization AS o
ON (e.Name= o.name)
WHEN MATCHED THEN
UPDATE SET e.OrgId = o.id
OUTPUT $action, inserted.*;
output子句是可选的,它将打印出插入Event表的ID。
Merge非常强大,因为它有其他子句可用于数据只在一个表而不是另一个表中的情况。这是一篇很好的帖子,可以清楚地解释事情。 https://www.simple-talk.com/sql/learn-sql-server/the-merge-statement-in-sql-server-2008/