繁体   English   中英

根据关系使用另一个表中的值更新sql表中的列

[英]update a column in a sql table with a value from another table based on a relationship

我正在处理SQL查询,以使用来自其他表的ID更新列值

Organization Table
Id Name
1  AA
2  BB

Events Table
Id Name OrgId
1  AA    NULL
2  AA    NULL
3  BB    NULL 

现在,我想使用“组织”表中的相应ID更新“事件”表的OrgId

我确实尝试了以下查询,但是我已经为每个组织明确地进行了查询

UPDATE Event SET OrId=
  (SELECT DISTINCT O.ID FROM Organization O WHERE O.Name='AA') WHERE Name='AA'

我可以知道一种更好的自动方法吗?

使用join

update e
    set orid = o.id
    from event e join
         organization o
         on o.name = e.tenant;

您可以使用执行合并

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子句是可选的,并且将打印出插入到事件表中的ID。

合并功能非常强大,因为它还有其他子句可用于数据仅在一个表中而不在另一个表中的情况。 这是一篇不错的文章,清楚地说明了事情。 https://www.simple-talk.com/sql/learn-sql-server/the-merge-statement-in-sql-server-2008/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM