所以基本上这就是伪代码,但我不知道如何在 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
}
}
}
编辑:好的,让我更具体一点。我们基本上是从作为 id 的休眠序列切换到对 id 列使用 guid。我正在尝试更新关联的外键,方法是创建前一个外键列的临时值,然后匹配临时列以更新实际列。
假设表 1 有 ID,表 2 有一个列用于将这些 ID 用作外键。我想使用表 2 中的先前值来匹配表 1 中的行,并设置表 2 中的键值以匹配表 1 的新 guid。
所以表 2 可能有多行重复的 id,但表 1 永远不会有重复的。如果这有意义的话。
最佳答案
在 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 中有多行,你会得到一个错误....
关于mysql - 在 SQL 中,如何通过查找与一列相等的所有行来更新表的每一行,然后将另一列设置为彼此相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000347/