使用CTE的MariaDB 10.3.14 DELETE语句导致语法错误

时间:2019-05-06 19:04:00

标签: mariadb common-table-expression

我正在尝试在MariaDB 10.3.14的DELETE语句中使用CTE(因为CTE对我而言比派生表更舒适),但我似乎无法使其正常工作。 我花了很多时间尝试解决这个问题,但是每次我遇到“语法错误”时,我都不知道为什么。 当我重写命令以使用派生表时,它可以工作。

让我为您展示一个非常简单的示例。 这不起作用(使用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 个答案:

答案 0 :(得分:1)

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