我有两个表,其中有一个名为{name1“和” name2“的VARCHAR
列:
表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
我想用id_table1
和table2
行匹配的table1
中的相应ID更新name1
的{{1}}列。
例如,在表2中,自name2
开始,第一行应在列4
中用id_table1
进行更新。
连接只需花费太多时间与字符串compare。
谢谢!
答案 0 :(得分:0)
考虑:
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
中具有唯一的匹配项。