hth*_*mos 8 mysql sql sql-server
所以基本上这将是伪代码,但我不知道如何在SQL中执行此操作,请帮忙.
for each row in table1{
loop through each row in table 2 {
if table1's row.column 1 = table2's row.column 2 for this row {
set table1's row.col2 = table2's row.col2
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:好的,让我更具体一点.我们基本上从hibernate序列切换为id,使用guid作为id列.我正在尝试通过创建前一个外键列的临时更新相关的外键,然后匹配临时列以更新实际列.
假设表1有id,而表2有一列用于将这些id用作外键.我想使用表2中的先前值与表1中的行匹配,并设置表2中的键值以匹配表1的新guid.
所以表2可能有多行重复的id,但表1永远不会有重复.如果那有意义的话.
小智 14
在SQL Server中,您可以执行以下操作:
UPDATE Table_1 SET Column_2 = t2.Column_2 FROM Table_1 AS t1 INNER JOIN Table_2 AS t2 ON t2.Column_1 = t1.Column_1
或类似的东西
UPDATE Table_1
SET Column_2 = (
SELECT t2.Column_2
FROM Table_2 AS t2
WHERE t2.Column_1 = Table_1.Column_1
)
当然,如果Table_2中有多行,则会出现错误....
它的基本原理是:
UPDATE Table1 SET col2 =
(select col2 FROM Table2 where Table2.column2 = Table1.column1)
Run Code Online (Sandbox Code Playgroud)
但是,如果两个表中的行之间没有 1-1 对应关系,那可能无法完全满足您的需求 - 因此我在您的问题下方发表了当前评论:
如果表 2 中有多个匹配行会发生什么情况?如果没有匹配的行会发生什么?
| 归档时间: |
|
| 查看次数: |
28004 次 |
| 最近记录: |