mysql - 在 SQL 中,如何通过查找与一列相等的所有行来更新表的每一行,然后将另一列设置为彼此相等

标签 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
        }
    }
}

编辑:好的,让我更具体一点。我们基本上是从作为 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/

相关文章:

sql - 如何从Oracle中的正则表达式中提取组?

SQL - 将所有用户合并到一张表中

sql-server - MSSql 仅对计数大于 3 的记录进行分组并返回其余记录

sql-server - Sql Server int 与 nvarchar 性能比较?

sql - 删除 SQL 中列的默认约束

mysql - 使用 join 选择多列并保持与选择中相同的名称

python - 为什么我不能为 python 使用已安装的模块?

sql - 寻找更好的方法来获得每组前 1 名

mysql - 为什么 `"%,2, %"like ",1,2,3 ,"` 返回零?

java - 如何使用java中的正则表达式检查给定sql查询中子句的正确顺序?