【发布时间】:2023-03-04 23:57:01
【问题描述】:
我有以下人员表:
人:
| id | f_name | l_name | role |
|:-----|:-------:|:---------:| -----:|
| 1 | John | Nathan | 1 |
| 2 | Brand | Ba | 1 |
| 3 | Bob | Do | 2 |
| 4 | Alice | Sia | 1 |
和用户表:
用户:
| id | f_name | l_name | role |
|:-----|:-------:|:------:| -----:|
| 1 | John | Tom | 1 |
我希望 People 表中角色 = 1 的任何人都将出现在 Users 表中,因此如果他们不在 users 表中,我将它们插入到表中,如果它们确实存在,我会更新他们的第一个和最后一个基于 id 列的 People 表中的名称和角色
想要的结果:
用户:
| id | f_name | l_name | role |
|:-----|:-------:|:------: | -----:|
| 1 | John | Nathan | 1 |
| 2 | Brand | Ba | 1 |
| 3 | Bob | Do | 1 |
提前致谢!
【问题讨论】:
-
这称为
MERGE或“Upsert”。如果您搜索,您会发现大量有关如何执行此操作的信息。 -
"People will probably tell you to use
MERGE... I urge you not to". 向 Aaron Bertrand 学习。 -
为什么要存储相同数据的两个副本?随便看看
-
根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
-
@DaleK 我最终只在特定条件源上使用
MERGE。感谢大家的帮助。
标签: sql sql-server tsql merge