Я пытаюсь использовать CTE в операторе DELETE (так как CTE гораздо удобнее для меня, чем производные таблицы) в MariaDB 10.3.14, но я не могу заставить его работать.
Я потратил довольно много времени, пытаясь решить эту проблему, но каждый раз, когда я сталкиваюсь с «синтаксической ошибкой», и я действительно не знаю, почему.
Когда я переписываю команду для использования производной таблицы, она работает.
Позвольте мне показать вам очень простой пример.
Это не работает (с помощью CTE):
with ps as (
select * from product order by id asc limit 10
)
delete p from product p left join ps on p.id = ps.id where ps.id is null
это работает без проблем (производная таблица):
delete p from product p left join (
select * from product order by id asc limit 10
) ps on p.id = ps.id where ps.id is null
Я не понимаю, почему первый пример дает мне синтаксическую ошибку.
Документация по этому вопросу весьма ограничена.
Пожалуйста, поймите, что это просто самый простой пример, чтобы показать вам проблему.
У меня есть более сложные сценарии, в которых использование CTE было бы действительно полезным, но я хотел представить суть проблемы.
Спасибо.