MariaDB 10.3.14 Оператор DELETE с использованием CTE приводит к синтаксической ошибке - PullRequest
1 голос
/ 06 мая 2019

Я пытаюсь использовать 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 было бы действительно полезным, но я хотел представить суть проблемы.

Спасибо.

1 Ответ

1 голос
/ 26 мая 2019

https://jira.mariadb.org/browse/MDEV-18511 означает, что по крайней мере рекурсивные CTE нельзя использовать с DELETES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...