MariaDB 10.3.14使用CTE删除语句会导致语法错误

MariaDB 10.3.14使用CTE删除语句会导致语法错误,mariadb,common-table-expression,Mariadb,Common Table Expression,我试图在MariaDB 10.3.14中的DELETE语句中使用CTE(因为CTE比派生表更适合我使用),但我似乎无法让它工作。 我花了很多时间试图解决这个问题,但每次我都会出现“语法错误”,我真的不知道为什么。 当我重写命令以使用派生表时,它就可以工作了 让我给你看一个非常简单的例子。 这不起作用(使用CTE): 这项工作没有问题(派生表): 我不明白为什么第一个例子给了我语法错误。 关于这个问题的文献资料相当有限 请理解,这只是向您展示问题的最简单示例。 我有更复杂的场景,在这些场景中,使用

我试图在MariaDB 10.3.14中的DELETE语句中使用CTE(因为CTE比派生表更适合我使用),但我似乎无法让它工作。 我花了很多时间试图解决这个问题,但每次我都会出现“语法错误”,我真的不知道为什么。 当我重写命令以使用派生表时,它就可以工作了

让我给你看一个非常简单的例子。 这不起作用(使用CTE):

这项工作没有问题(派生表):

我不明白为什么第一个例子给了我语法错误。 关于这个问题的文献资料相当有限

请理解,这只是向您展示问题的最简单示例。 我有更复杂的场景,在这些场景中,使用CTE将非常有帮助,但我想介绍问题的核心


谢谢。

意味着至少递归CTE不能用于删除。

您使用的是哪个版本的MariaDB?您好,我使用的是10.3.14这是某种JPA查询吗<代码>删除-->p我确实需要“p”,因为它是一种多表语法(我使用的是JOIN)。如果我使用类似于
whereid in(select…)
的东西,我就不需要“p”意味着至少递归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