You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何将匹配Table3主键ID的Table2数据归档至Table4

归档Table2对应记录到Table4的实现方案

核心SQL语句

你可以通过匹配Table3中已归档的ID筛选Table2的对应记录,推荐和原Table1归档逻辑放在同一事务保证一致性,完整写法如下:

Declare @Date date
set @Date = '2021-11-18'
Begin transaction

-- 原有Table1归档逻辑(已执行过可跳过)
INSERT INTO dbo.Table3 (ID, Date, Amount)
SELECT ID, Date, Amount
FROM dbo.Table1
WHERE Date=@Date

-- 新增Table2归档到Table4的逻辑
INSERT INTO dbo.Table4 (ID, Type)
SELECT t2.ID, t2.Type
FROM dbo.Table2 t2
INNER JOIN dbo.Table3 t3 ON t2.ID = t3.ID
WHERE t3.Date = @Date

-- 确认数据无误后可执行COMMIT,需要删除原表已归档数据可补充对应DELETE语句
Commit transaction

可选写法(IN子句实现,效果和JOIN一致)

INSERT INTO dbo.Table4 (ID, Type)
SELECT ID, Type
FROM dbo.Table2
WHERE ID IN (
    SELECT ID 
    FROM dbo.Table3 
    WHERE Date = @Date
)

注意事项

  • 如果你已经单独执行过Table1的归档操作,只需要执行插入Table4的部分即可,无需重复插入Table3的记录
  • 执行INSERT前建议先运行SELECT语句验证筛选结果是否符合预期,避免插入错误数据:
    SELECT * FROM dbo.Table2 WHERE ID IN (SELECT ID FROM dbo.Table3 WHERE Date = '2021-11-18')
    
  • 若确定Table3中当前仅包含本次归档的记录,WHERE条件中的Date = @Date可以省略,直接取Table3全量ID即可

内容的提问来源于stack exchange,提问作者notsoexperienced

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:05