【发布时间】:2018-08-29 09:48:29
【问题描述】:
假设我有两个表 Table_1 和 Table_2。
两者都有相同的列。
@Table_1
| Id | Col1 | Col2 | Col3 |
| 1 | a | b | c |
| 2 | d | e | f |
和
@Table_2
| Id | Col1 | Col2 | Col3 |
| 1 | a | 0 | 0 |
| 3 | z | z | y |
我如何编写将从Table_1 获取行的存储过程,将该行的每一列与Table_2 中的行进行比较,并相应地更新Table_2 列。如果在Table_2 中找不到Table_1 中的行,则只需插入即可。
现在。我意识到INSERT 很容易写,它可能看起来像
insert into @Table_2(col1, col2, col3)
select col1, col2, col3 from @Table_1 where id = @id
存储过程执行后Table_2的最终结果应该是这样的
@Table_2
| Id | Col1 | Col2 | Col3 |
| 1 | a | b | c |
| 2 | d | e | f |
| 3 | z | z | y |
将Table_1的每一行和每一列与Table_2中的数据进行比较如何?
@Martyn Meeks 的答案作为两个单独的陈述!
根据用户@SQL_M 使用MERGE 提供的https://www.mssqltips.com/sqlservertip/3074/use-caution-with-sql-servers-merge-statement/ 语句并不完美,但可以工作
@Jayasurya Satheesh 的脚本也可以,但使用 MERGE 语句
【问题讨论】:
标签: sql sql-server database stored-procedures stored-functions