在SQL server中,如何通过比较两个源表来更新目标表列值

在SQL server中,如何通过比较两个源表来更新目标表列值,sql,sql-server,tsql,sql-update,Sql,Sql Server,Tsql,Sql Update,我有两个SQL Server源表。每个表包含两列,一列为phoneno1&ID,另一列为phoneno2&ID 第一个源表有30k行,第二个源表有180万行,包括源表1中30k条记录中的20k条记录 我有100个目标表,每个表只包含一列-phoneno 我需要将上述两个源表与100个目标表逐一进行比较,如果任何目标表phoneno值与源表phoneno 1和2值匹配,则我必须将源表ID列中的值覆盖到目标表phoneno值 如果不匹配,那么我需要将不匹配的值插入一个包含两列phoneno&ID的新

我有两个SQL Server源表。每个表包含两列,一列为phoneno1&ID,另一列为phoneno2&ID

第一个源表有30k行,第二个源表有180万行,包括源表1中30k条记录中的20k条记录

我有100个目标表,每个表只包含一列-phoneno

我需要将上述两个源表与100个目标表逐一进行比较,如果任何目标表phoneno值与源表phoneno 1和2值匹配,则我必须将源表ID列中的值覆盖到目标表phoneno值

如果不匹配,那么我需要将不匹配的值插入一个包含两列phoneno&ID的新表中


如何在SQL Server中实现?

创建20k个表,每行一个。。真的吗?您应该使用国际通用的度量标准——数千、数百万、十亿。您可以添加一些示例源表,以及您希望最终的表是什么样的?但我猜您最终会得到某种循环(或游标)和动态sql(因为表名是一个变量)。首先只进行一次匹配,这将是连接到两个源表的目标表。将SQL添加到您的问题中,首先将100个目标表合并到一个包含两列的表中。一个是电话号码。第二个是标识表的标识符。下面是预期结果的示例。源表1电话号码1 ID 12345678 11 88888888 22 77777777 33 11123232 44源表2 65368853 88 12345678 11 77777777 33目标表电话号码12345678 88 88888 777777 11111111预期结果:目标表电话号码11 22 22 33 11111111应移动到一个新表,因为此值在两个源中都不可用桌子。