Как исправить ошибку в запросе на MySQL 5.7, которая гласит: "#1093 - Не допускается указание таблицы 'b_uts_crm_company' в списке таблиц FROM для внесения в нее изменений"? Вот сам запрос: ``` 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 ) ```
В запросе вы указали таблицу `b_uts_crm_company` в подзапросе, который присваивает значения полю `UF_CRM_1696186645`. В MySQL 5.7 нельзя изменять таблицу, которая используется в подзапросе. Чтобы исправить эту ошибку, вы можете использовать временную таблицу. Вот исправленный запрос: ``` UPDATE b_uts_crm_company SET UF_CRM_1696186645 = ( SELECT t.REVENUE FROM ( 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 ) AS t ) ``` В этом запросе мы используем подзапрос как источник данных во временной таблице `t`. Затем мы обновляем поле `UF_CRM_1696186645` в таблице `b_uts_crm_company` с помощью значений из временной таблицы `t`.
Подзапрос "знает" о таблице 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) Подзапрос должен возвращать только одно значение, чтобы корректно выполниться.