n1ro°
RU

Ошибки · Решение

MySQL error 1093: target table for update is used in FROM

Один SQL использует целевую таблицу и как источник подзапроса, и как объект модификации в конфликтующей форме.

Редакция N1RO · Проверено

Короткий ответ

MySQL 1093 возникает, когда statement пытается изменять таблицу и одновременно читать её недопустимым способом в subquery FROM.

Что означает ошибка

Один SQL использует целевую таблицу и как источник подзапроса, и как объект модификации в конфликтующей форме.

Возможные причины

  • UPDATE/DELETE фильтрует строки через subquery к той же таблице.
  • Optimizer merge превращает derived table обратно в проблемный self-reference.
  • Query builder сгенерировал self-select вместо join/derived materialization.

Что проверить

  • Сохраните полный statement и выделите target table.
  • Проверьте, откуда тот же table name появляется во вложенном SELECT.
  • Сравните вариант с materialized derived table или корректным self-join.

Безопасные шаги

  1. Перепишите запрос через допустимый JOIN/derived-table pattern.
  2. При использовании derived table убедитесь, что optimizer не сливает её обратно в исходный block.
  3. Проверьте результат на транзакционной копии данных перед массовым UPDATE/DELETE.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Для сложного массового DML с 1093 разработчик БД должен проверить план и семантику переписанного запроса, а не только факт исчезновения ошибки.

Похожие ошибки

  • /errors/mysql-error-1005-cant-create-table/
  • /errors/mysql-error-1040-con-count-error/
  • /errors/mysql-error-1048-bad-null-error/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.