sql - 如何在 SQL Server 中使用存储过程合并第三个表中的两个数据表?

标签 sql sql-server algorithm stored-procedures

表1

-----------------------------
Id      | Batch    |   Qty
-----------------------------
   1       A1         5     
   2       A2         5      
   3       A3         5    
   4       A4         5

表2

-----------------------------
Id     | Batch  | Qty
------------------- ----------
1         A1        6    
2         A2        6    
3         A3        6     
5         A5       10

预期结果

-----------------------------
Id     | Batch  | Qty
-----------------------------    
1         A1       6 (Qty updated)    
2         A2       6 (Qty updated)    
3         A3       6 (Qty updated)    
4         A4       5 (remains as same)    
5         A5       10 (row in table 2)

如何在 SQL Server 中实现这一点?如果有人知道这个数据表操作请分享..

最佳答案

您可以使用 MERGE根据表 2 更新表 1 的查询:

MERGE INTO Table1 as target
USING Table2 as source
ON (target.id = source.id)
WHEN MATCHED THEN 
    UPDATE SET target.Batch = source.Batch, 
               target.Qty = source.Qty
WHEN NOT MATCHED THEN   
    INSERT (Id, Batch, Qty)
    VALUES (source.Id, source.Batch, source.Qty)

关于sql - 如何在 SQL Server 中使用存储过程合并第三个表中的两个数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046686/

相关文章:

algorithm - 修剪和搜索算法有困难

php - 获取矩阵元素组合的最小总和

php - 计算类别中的文章数

sql - 查询不带键的 JSONB

mysql - 如何优化这些 SQL 查询?

asp.net - 在 sql server 数据库中按部分名称搜索 books

sql - 在 SQL 中组合连续行中特定列的值

c# - 使用 CLR 返回表

php - 搜索表单的条件

生成巨大词表的算法