sql - 在 SQL Server 中使用 Merge 语句
问题描述
在 sql server 中使用 Merge 我只需要从源表中加载 1 年的数据。请帮我建立逻辑。
DATEADD(year,-1,getdate()) -- one year date
MERGE target_table USING source_table
ON merge_condition
WHEN MATCHED
THEN update_statement
WHEN NOT MATCHED
THEN insert_statement;
解决方案
正如拉努建议的那样:
MERGE target_table
USING (SELECT * FROM source_table WHERE somedatecolumn > DATEADD(year,-1,getutcdate())) x
ON merge_condition
WHEN MATCHED
THEN update_statement
WHEN NOT MATCHED
THEN insert_statement
驱动合并的源表是合并中唯一涉及的数据。如果 source_table 有 1000 行,但去年只有 10 行,那么 MERGE 将操作超过 10 行。如果目标表有 10000 行,其中 7 行与源表的 10 行中的行匹配,则将进行 7 次更新和 3 次插入。目标表在操作结束时将有 10003 行
推荐阅读
- excel - 无法将 VBA 字符串转换为 Excel 单元格公式
- ios - UISplitViewController 中 detailViewController 中的布局问题
- networking - microk8s 中的简单 ubuntu pod 无法 ping 外部服务器
- android - 当分辨率对于屏幕尺寸来说太高时,我可以缩放一个完整的颤振应用程序吗?
- powershell - Windows Powershell 环境变量
- mongodb - 使用 mongo 或 mongoose 和 node.js 将字符串值聚合到每个字段的唯一字符串值数组
- r - 研究 R 中性别差异的子集函数
- php - Laravel 6错误:多选值不会转到下一页
- azure-application-insights - KUSTO:多个拆分查询中的阈值线
- azure-functions - 从带有队列输出的 Azure 函数返回 403 状态码