programing

CTE를 사용한 MariaDB 10.3.14 DELETE 스테이트먼트에서 구문 오류가 발생함

bestcode 2022. 10. 18. 22:52
반응형

CTE를 사용한 MariaDB 10.3.14 DELETE 스테이트먼트에서 구문 오류가 발생함

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를 사용하는 것이 매우 도움이 되는 보다 복잡한 시나리오가 있습니다만, 문제의 핵심을 설명하려고 합니다.

감사해요.

https://jira.mariadb.org/browse/MDEV-18511은 적어도 재귀 CTE를 DELETE와 함께 사용할 수 없음을 나타냅니다.

언급URL : https://stackoverflow.com/questions/56010962/mariadb-10-3-14-delete-statement-using-cte-results-in-syntax-error

반응형