Ошибка 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
Ошибка MySQL 1093 — невозможно указать целевую таблицу для обновления в предложении FROM
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.