Как исправить ошибку в запросе на 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)
Подзапрос должен возвращать только одно значение, чтобы корректно выполниться.