MySQL: обновление столбца таблицы идентификатором из другой таблицы путем сравнения строк

0

У меня есть две таблицы со столбцом VARCHAR с 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

Я хочу, чтобы обновить столбец id_table1 из table2 с соответствующим идентификатором из table1, где строки name1 и name2 матча. Например, в таблице 2 первая строка должна быть обновлена на 4 в столбце id_table1 поскольку 'xchad' = 'xchad'.

Объединение просто занимает слишком много времени при сравнении строк.

Спасибо!

Теги:

1 ответ

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню