Подтвердить что ты не робот

Обновление MySQL с подбором select

У меня есть таблица, которая может вызвать ее table1, и данные в двух столбцах были уничтожены.

К счастью, у меня есть старая резервная копия таблицы.

В старой резервной копии значения для двух столбцов, о которых идет речь, верны, но остальные столбцы устарели, поэтому я не могу просто импортировать весь дамп.

Поэтому вместо этого я импортировал его в другую таблицу, которую я вызову table2. Каждая запись имеет идентификатор, который одинаковый в обеих таблицах.

Так что в основном мне нужен запрос, который будет проходить через каждую запись в таблице1 и обновлять столбец 1 и столбец2 с соответствующими значениями из таблицы2.

4b9b3361

Ответ 1

Исходная таблица - таблица1, а таблица резервного копирования - таблица2

UPDATE table1 t1 JOIN table2 t2 ON t1.id = t2.id
SET t1.col1 = t2.col1, t1.col2 = t2.col2, ...

Ответ 2

Это будет работать во всех вариантах базы данных SQL:

update table1 t set
column1 = (select column1 from old_table where id = t.id),
column2 = (select column2 from old_table where id = t.id);

Нет необходимости в каких-либо специальных/агрегатных функциях, потому что совпадение идентификатора попадет ровно в одну строку.

Ответ 3

Я думаю, вы можете попробовать что-то вроде этого:

UPDATE table1 SET table1field = (SELECT MAX(table2.table2field) FROM table2 WHERE table1.table1field = table2.table2field)

Ответ 4

выполняется ниже запроса, но он дает ошибку # 1093

UPDATE `mentor2122017`.`users` SET language_id =
   (SELECT GROUP_CONCAT(ul.language_id) FROM `mentor2122017`.`users` u 
   left join `mentor`.`user_language` ul ON u.id = ul.users_id 
   where 
   ul.language_id is not null GROUP by ul.users_id)