ОК, так что я отстой в MySQL, но вот что я хочу сделать:
delete from course_plan_relationships
where course_plan_relationships.id not in (
select course_plan_relationships.id
from daily_plans inner join
course_plan_relationships on daily_plans.id=course_plan_relationships.daily_plan_id
);
Чтобы дать вам представление о том, что происходит, я покажу вам подзапрос и его результат:
mysql> select course_plan_relationships.id from daily_plans inner join
course_plan_relationships on daily_plans.id=course_plan_relationships.daily_plan_id;
+----+
| id |
+----+
| 1 |
| 13 |
+----+
Итак, я хочу удалить все элементы в course_plan_relationships, где его поле id отсутствует в той таблице, которую я сгенерировал в подзапросе.
Я получаю ошибку:
ОШИБКА 1093 (HY000): вы не можете указать таблицу назначения
'course_plan_relationships' для обновления в предложении FROM
Что я в основном получил, так это то, что по какой-то причине MySQL не позволит вам УДАЛИТЬ или ОБНОВИТЬ на основе подзапроса, включающего в себя ту же таблицу.
Хорошо, и вот предполагаемый обходной путь:
http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/
Но он для ОБНОВЛЕНИЯ и не использует синтаксис "in".
Я действительно новичок в этом, поэтому любая помощь будет очень признательна. Мне не повезло, используя синтаксис типа «AS blahothertablename» (продолжаю получать ошибки синтаксиса), и я также не могу понять, как сохранить первоначальный подзапрос как временный результат (опять же, ошибки синтаксиса).