Sql server 遍历行,检查更新,然后更新行
我有一个表(比如说数据库中的表a),它随着时间的推移而更新。我还有另一个表(表B,从外部源创建),它也经过了更新,但来源不同 每个表都有一个Sql server 遍历行,检查更新,然后更新行,sql-server,tsql,Sql Server,Tsql,我有一个表(比如说数据库中的表a),它随着时间的推移而更新。我还有另一个表(表B,从外部源创建),它也经过了更新,但来源不同 每个表都有一个ID、名称、RecordDetails、LastUpdateDate 我将如何执行以下操作 遍历表B,并确定表A是否具有相同的ID 如果是,则比较LastUpdateDate字段 如果B有一个最近的LastUpdateDate,则使用B中该记录的所有信息更新该记录 否则,什么也不做 如果表A没有相同的ID,则将B中的记录添加到表A中 停止考虑循环或
ID、名称、RecordDetails、LastUpdateDate
我将如何执行以下操作
- 遍历表B,并确定表A是否具有相同的ID
- 如果是,则比较LastUpdateDate字段
- 如果B有一个最近的LastUpdateDate,则使用B中该记录的所有信息更新该记录
- 否则,什么也不做
- 如果是,则比较LastUpdateDate字段
- 如果表A没有相同的ID,则将B中的记录添加到表A中
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
UPDATE A
SET col1 = B.col1,
col2 = B.col2,
etc.
FROM dbo.TableA AS A
INNER JOIN dbo.TableB AS B
ON A.ID = B.ID
WHERE A.LastUpdatedDate <= B.LastUpdatedDate;
INSERT dbo.TableA(ID, col1, col2, etc.)
SELECT ID, col1, col2, etc.
FROM dbo.TableB AS B
WHERE NOT EXISTS
(
SELECT 1 FROM dbo.TableA
WHERE ID = B.ID
);
COMMIT TRANSACTION;
将事务隔离级别设置为可序列化;
开始交易;
更新
设置col1=B.col1,
col2=B.col2,
等
从dbo.TableA作为
内部联接dbo.TableB为B
在A.ID=B.ID上
A.LastUpdateDate在哪里