如您所见,我在这里有2个表,表1和表2.表1中的 srid 列是一个标识列。
表2类似于表1的子表,我们可以使用 srid 列将表2与表1链接起来。
现在我想要实现的是取代原来的 srid ,即1,2,3用新的,即4,5,6,而同时我们保持原来的 crvalue 不变。然后我们将其重新插入表2中。
我发现更换新的srids有点挑战并且卡住了。那么我应该用什么查询/脚本来实现呢?
感谢。
答案 0 :(得分:1)
您可以尝试这样的事情:
WITH ranked AS (
SELECT
*,
rank = ROW_NUMBER() OVER (PARTITION BY uid ORDER BY srid)
FROM Table1
)
UPDATE t2
SET srid = new.srid
FROM Table2 t2
INNER JOIN ranked old ON old.uid = 1 AND old.srid = t2.srid
INNER JOIN ranked new ON new.uid = 2 AND new.rank = old.rank
基本上,您在每个srid
组中对uid
值进行排名,然后按排名加入这两个子集,以将每个旧srid
与新的Table2
相关联。当然,您当然也会加入srid
旧的{{1}}子集。
答案 1 :(得分:0)
基于这个简单的例子,我认为你可以像这样加入表格
... FROM Table1 INNER JOIN Table2 ON Table1.srid = Table2.srid + 3 ...
然后,您将把Table1.srid和Table2.crvalue插入到新表中。这些结果应该返回您的最后一张表。我希望这会有所帮助。