Ошибка MySQL 1093 — невозможно указать целевую таблицу для обновления в предложении FROM

NexusRex предоставил very good solution для удаления my-sql с объединением из той же mysqld таблицы.

Если вы сделаете mysql-query это:

DELETE FROM story_category
WHERE category_id NOT IN (
        SELECT DISTINCT category.id AS cid FROM category 
        INNER JOIN story_category ON category_id=category.id
)

вы получите сообщение mysql об ошибке.

Но если обернуть mysql-query условие еще одним выбором:

DELETE FROM story_category
WHERE category_id NOT IN (
    SELECT cid FROM (
        SELECT DISTINCT category.id AS cid FROM category 
        INNER JOIN story_category ON category_id=category.id
    ) AS c
)

Он subqueries поступил бы правильно !!

Объяснение: оптимизатор mysql-query запросов выполняет derived merge optimization для первого mysqlsh запроса (что приводит к сбою mysql-table с ошибкой), но второй запрос sql-delete не подходит для производного mysql-table слияния . оптимизация. Следовательно, оптимизатор mysql-table вынужден сначала выполнить subquery подзапрос.

mysql

subquery

sql-delete

mysql-error-1093

2022-11-20T07:50:41+00:00
Вопросы с похожей тематикой, как у вопроса:

Ошибка MySQL 1093 — невозможно указать целевую таблицу для обновления в предложении FROM