MariadB 10.3.14使用CTE删除语句结果是语法错误



我试图在删除语句中使用CTE(因为CTES比派生的表比派生的表使用要舒适得多(,但我似乎无法使它起作用。我花了很多时间试图解决这个问题,但是每次我遇到"语法错误"时,我真的不知道为什么。当我重写命令以使用派生表时,它可以正常工作。

让我向您展示一个非常简单的例子。这不起作用(使用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确实很有帮助,但我想介绍问题的核心。

谢谢。

https://jira.mariadb.org/browse/mdev-18511意味着至少不能与删除一起使用递归CTE。

最新更新