MySQL — UPDATE с подстановкой данных из другой таблицы

Сегодня мне потребовалось быстренько заменить значения пары столбцов одной таблицы на такие же из другой для определенных записей в первой. Записи в обеих таблицах связаны по ID. Попробовав набросать запрос в лоб, я понял, что не знаю, как его написать. 🙂

Гугл выручил. На одном из форумов я нашел неведомый мне ранее вариант запроса UPDATE, который и позволяет сделать желаемое.

P.S. А раньше я бы скорее всего рисовал скриптик на пыхе, который делал бы селекты, а затем апдейты. 🙂

10 комментариев

  1. На сколько я понимаю смысл этого запроса в том, чтобы в несколько полей таблицы table_one внести значения полей из таблицы table_two, связав записи по полю id.
    Вот для PostgreSQL:

  2. У меня был запрос с INNER JOIN обрабатывался 10 минут, ваш запрос уже обрабатывает 7 минут, можно как нибудь еще ускорить?

    1. Извините за столь поздний ответ. 🙂
      В качестве решения проблемы стоит использовать инструменты профилирования запросов. После нахождения узких мест исправляем ситуацию. Где-то поможет добавление индекса, где-то введение вьюшки, а где-то и сам запрос придётся переделывать.

    1. Угу. Вот смотрю сейчас на заметку и понять не могу — почему именно так сделал тогда. Какие-то причины были, но, видимо, их смысл утерян при набрасывании «сферического» примера.

    2. Большое спасибо! Только ваш код и сработал. В коде выше phpmyadmin ругался на FROM.

  3. ДАЙ БОГ СЧАСТЬЯ ТЕБЕ И ТВОЕЙ СЕМЬЕ, ДОБРЫЙ ЧЕЛОВЕК!!!
    ЧАСОВ 8 НЕ МОГ НАПИСАТЬ ОДИН ОДИН ЗАПРОС!!!!!!!! И только ваш способ мне помог!!! Огромное спасибо!

  4. Вадим, спасибо. Как легко и просто. У меня голова свернулась, что эта машина от меня хочет и тут сразу ЗАРАБОТАЛО!

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *