MySQL:使用字符串比较更新其他列中ID为ID的表列

时间:2019-04-01 15:28:13

标签: mysql sql

我有两个表,其中有一个名为{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_table1table2行匹配的table1中的相应ID更新name1的{​​{1}}列。 例如,在表2中,自name2开始,第一行应在列4中用id_table1进行更新。

连接只需花费太多时间与字符串compare。

谢谢!

1 个答案:

答案 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中具有唯一的匹配项。