Использование:
UPDATE YOUR_TABLE
SET text_field_1 = (SELECT t.text_field_2
FROM other_table t
WHERE t.id = YOUR_TABLE.id)
Внимание * * 1004
Если в other_table
нет поддерживающей записи, text_field_1
будет установлен в NULL.
Объяснение
В стандартном SQL вы не можете иметь псевдонимы таблиц в таблице, определенной для оператора UPDATE (или DELETE), поэтому вам необходимо использовать полное имя таблицы для указания источника столбца.
Это называется коррелированным подзапросом - корреляция должна быть причиной оценки по таблице из внешнего запроса.
Разъяснение
MySQL (и SQL Server) поддерживают псевдонимы таблиц в выражениях UPDATE и DELETE, в дополнение к синтаксису JOIN:
UPDATE YOUR_TABLE a
JOIN OTHER_TABLE b ON b.id = a.id
SET a.text_field_1 = b.text_field_2
... не идентичен предоставленному запросу, потому что будут обновлены только те строки, которые соответствуют - те, которые не соответствуют, их значения text_field_1
останутся нетронутыми. Это эквивалентно предоставленному запросу:
UPDATE YOUR_TABLE a
LEFT JOIN OTHER_TABLE b ON b.id = a.id
SET a.text_field_1 = b.text_field_2