gpt4 book ai didi

sql-server-2008 - 删除插入后存在的重复条目

转载 作者:行者123 更新时间:2023-12-01 12:53:40 25 4
gpt4 key购买 nike

我在将信息从一张表插入到另一张表时遇到了一个小问题。

例如:从表A(可以包含~10kk条目)到表B,除了表ADateTimeStamp 用于获取某些数据(边界)。

所以我需要将数据从 A 移动到 B(没有 DateTimeStamp)并从 B 中删除重复项。

例子:

表A

DateTimeStamp | Key | value 
2012-02-03 | 2 | 123
2012-02-03 | 3 | 985
2012-02-03 | 5 | 1584

表B

Key  | value 
8 | 45
3 | 785
9 | 7457

所以我需要从 Table B 中删除带有 Key = 3 的行,并插入 Table A 中的所有其他内容。

结果将是:

Key  | value 
8 | 45
3 | 985
9 | 7457
2 | 123
5 | 1584

有没有优雅的方法来做到这一点?触发器太慢,我正在寻找不需要临时表的解决方案。

SQL Server 或 SSIS 解决方案\欢迎提出建议

最佳答案

如果您使用的是 SQL Server 2008 或更新版本,您可以使用单个 MERGE 语句非常轻松地完成此操作 - 如下所示:

MERGE INTO dbo.B                -- target table
USING A ON b.Key = a.Key -- source table and "link" information
WHEN MATCHED
THEN UPDATE SET B.Value = A.Value -- if "Key" already present in B - update "Value"
WHEN NOT MATCHED -- if "Key" not present in B - insert new row
THEN INSERT(TblKey, TblValue) VALUES(A.TblKey, A.TblValue)
WHEN NOT MATCHED BY SOURCE
DELETE -- if present in B, but not in A -> remove
;

关于sql-server-2008 - 删除插入后存在的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com