我有两个表 A 和 B,有动态列,我不知道其中的关键列是什么,除了另一个名为 C 的表。
C 表指定表 A 和 B 中哪一列是键列。可以有 1 个或多个键列。
我的问题是,我将如何生成这样一个查询,其中我从 A 中选择所有行,其中键列等于 B 中的相同键列?
我的一个想法是创建一个使用 sp_executesql 执行的文本查询,但我需要一些关于如何生成查询的好主意。
首先,我将从表 C 中为表 A 和 B 选择所有键列到我声明的表 @keyColumns。
然后,我将使用 while 循环遍历 @keyColumns 中的所有键列并生成查询并使用 sp_executesql 执行它。
例如:
UPDATE A
SET ...
FROM B INNER JOIN A
ON A.keycol1 = B.keycol1 AND A.keycol2 = B.keycol2 AND ...
为了清楚起见,C 表只指定了 B 表的键列,据此我知道 A 具有相同的键列。
但我想知道是否有更好的方法来解决这个问题。