我有两个表,它们的 VARCHAR
列名为“name1”和“name2”:
表 1:
id | name1
1 | xyz
2 | foo
3 | barfoo
4 | xchad
表 2:
id | id_table1 | name2
1 | NULL | xchad
2 | NULL | foo
3 | NULL | hade
4 | NULL | bar
我想用 table1
中的相应 id 更新 table2
的 id_table1
列,其中行 name1
和 name2
匹配。
例如,在表 2 中,第一行应该在 id_table1
列中更新为 4
,因为 'xchad' = 'xchad'
。
连接只是在字符串比较上花费了太多时间。
谢谢!
最佳答案
考虑:
UPDATE table1 t1
INNER JOIN table2 t2 ON t2.name2 = t1.name1
SET t2.id_table1 = t1.id
有了 table1(name1)
和 table2(name2)
上的索引,这应该可以高效地执行。
另一种方法是使用相关子查询:
UPDATE table2 t2
SET t2.id_table1 = (
SELECT t1.name1 FROM table1 t1 WHERE t1.name1 = t2.id_table1
)
请注意,第二种解决方案确实要求 table2
中的每个名称在 table1
中具有唯一匹配项。
关于MySQL:通过字符串比较使用其他表中的id更新表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458645/