Задать вопрос
@sevnet
Системный аналитик, бизнес-консультант

Как сделать изменение поля из одной таблицы в другую с сопоставлением по другому полю?

Mysql 5.7
Запрос:
UPDATE b_uts_crm_company 
SET UF_CRM_1696186645 = (SELECT b_crm_company.REVENUE
                        FROM b_crm_company
                        INNER JOIN b_uts_crm_company ON b_crm_company.ID = b_uts_crm_company.VALUE_ID)

Ошибка:
#1093 - Не допускается указание таблицы 'b_uts_crm_company' в списке таблиц FROM 
для внесения в нее изменений
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@sevnet Автор вопроса
Системный аналитик, бизнес-консультант
UPDATE b_uts_crm_company SET `UF_CRM_1696186645` = (SELECT REVENUE FROM b_crm_company WHERE b_crm_company.ID = b_uts_crm_company.VALUE_ID AND b_crm_company.REVENUE IS NOT NULL);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Так-то подзапрос "знает" о таблице b_uts_crm_company из основного запроса в секции where (но не наоборот).
UPDATE b_uts_crm_company 
SET UF_CRM_1696186645 = (SELECT b_crm_company.REVENUE
                        FROM b_crm_company
                        where b_crm_company.ID = b_uts_crm_company.VALUE_ID)

Есть еще момент, что подзапрос не должен возвращать больше 1 значения, тогда он выполнится корректно.
Если что-то нужно вставить из связанной таблицы любой ценой, то используйте max( b_crm_company.REVENUE) или min( b_crm_company.REVENUE).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы