我有一个与SQL Server中的定时作业相关的问题。嗯,我猜这不完全与定时作业有关,而是与SQL查询有关。
无论如何,我在我的数据库中有2个表Table_1和Table_2。
我希望每5分钟运行一个定时作业,更新Table_2中所有缺失的记录,使其与Table_1一致。
例如,如果Table_1有3条记录:
该工作的作用是向Table_2添加记录“1 ABC”:
我已经尽力解释我的情况了。我是这个论坛的新手,所以如果问了一些愚蠢的问题或者没有解释清楚,我深表歉意。 非常感谢任何帮助。
编辑:
谢谢大家的回复!
我相信我没能提到的是,Table_1的任何一列都可以更新,而这些更新应该反映在Table_2中。
@Jibin Balachandran 的解决方案可以在仅更新 UserID 时有效,但在更改其他列时无效。
我已经想出了自己的解决方案,并想听听你们的意见:
使用 Right Join 删除 Table_2 中的记录,然后使用 Left Join 将 Table_1 中存在的记录插入到 Table_2 中是否合理?
@Ranjana Gritmire 我还没有尝试过您的解决方案。如果没有其他办法,我会试一试。谢谢:)
无论如何,我在我的数据库中有2个表Table_1和Table_2。
我希望每5分钟运行一个定时作业,更新Table_2中所有缺失的记录,使其与Table_1一致。
例如,如果Table_1有3条记录:
1 ABC
2 PQR
3 XYZ
Table_2只有2条记录:
2 PQR
3 XYZ
该工作的作用是向Table_2添加记录“1 ABC”:
2 PQR
3 XYZ
1 ABC
我在定时任务的步骤中编写的查询如下:
由于我的代码表名不同,请见谅:
Table_1 = [sfs_test].dbo.[Table_1],
Table_2 = [sfs_test2].dbo.[Table_1]
INSERT INTO [sfs_test2].dbo.[Table_1] (UserID, UserName)
SELECT UserID, UserName
FROM [sfs_test].dbo.[Table_1]
WHERE UserID NOT IN (SELECT DISTINCT UserID
FROM [sfs_test2].dbo.[Table_1])
现在,我面临的问题是,如果我更新/更改Table_1中的一条记录,例如将记录“1 ABC”的ID更改为“4 ABC”
当作业运行时,我会在Table_2中得到以下记录:
2 PQR
3 XYZ
1 ABC
4 ABC
我正在寻找以下输出:
2 PQR
3 XYZ
4 ABC
我已经尽力解释我的情况了。我是这个论坛的新手,所以如果问了一些愚蠢的问题或者没有解释清楚,我深表歉意。 非常感谢任何帮助。
编辑:
谢谢大家的回复!
我相信我没能提到的是,Table_1的任何一列都可以更新,而这些更新应该反映在Table_2中。
@Jibin Balachandran 的解决方案可以在仅更新 UserID 时有效,但在更改其他列时无效。
我已经想出了自己的解决方案,并想听听你们的意见:
使用 Right Join 删除 Table_2 中的记录,然后使用 Left Join 将 Table_1 中存在的记录插入到 Table_2 中是否合理?
@Ranjana Gritmire 我还没有尝试过您的解决方案。如果没有其他办法,我会试一试。谢谢:)
ABC
并删除旧的。 - J09