【发布时间】:2010-11-19 17:38:27
【问题描述】:
我有两张桌子。
表 A 和表 B。列相同。
create table TableA (
id int
, name varchar
, last datetime
)
create table TableB (
id int
, name varchar
, last datetime
)
我正在用大量数据填充表 A。我想将表 A 中的数据插入或更新到表 B 中。
我想从表 A 中获取数据,如果 id 和 name 不匹配,则插入到表 B 中,或者如果 id 和 name 匹配,则更新。
我尝试了一些 ETL 工具,但结果很慢。我对 id 和 name 进行了索引,我想用 SQL 尝试一下。
我有以下但工作不正确:
SELECT @id = ID,
@name = name,
@LSDATE = LastSeen_DateTime
FROM DBO.A
IF EXISTS (SELECT ID, name FROM DBO.A
WHERE @ID = ID AND @name = Name)
开始 - 更新 结尾 别的 开始 - 插入 结束
我想我需要把它放在一个循环中,但我不太确定如何让它运行。
谢谢。
【问题讨论】:
-
问题是将表 A 填充到表 B,A 到 B 中的所有行,而不是单行。它应该在一个循环中。对于 A 中的每一行,要么插入 B,要么更新 B 中的一行。
标签: sql sql-server sql-server-2005 tsql stored-procedures