사용할 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오.
SQL 구문을 만들려고 합니다.
UPDATE `%s`
JOIN (WITH t2 AS
(
SELECT LAG(storymain_id,1) OVER (ORDER BY storymain_id) AS lg, `%s`.*
FROM `%s`
)
SELECT t2.*,
1 + SUM(CASE WHEN COALESCE(lg,storymain_id) = storymain_id THEN 0 ELSE 1 END )
OVER (ORDER BY storymain_id) AS new_id
FROM t2 ) t2
ON `%s`.storymain_id = t2.storymain_id SET `%s`.storymain_id = t2.new_id;
내 maria-db 서버에서 다음 버전:
mysql Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
실행할 때 오류가 발생했습니다.
SQLSTATE[42000]:
Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB Server version for the right syntax to use near 't2 AS\r\n\t\t\t\t
(\r\n\t\t\t\t\tSELECT LAG(storymain_id, 1) OVER (ORDER BY storymain_id) AS' at line ~.
작동을 시켜야 하는데 구문을 어떻게 바꾸는지 모르겠어요.
도와주셔서 감사합니다...
저는 그냥 cte를 일반 파생 테이블로 교체할 것입니다.cte는 쿼리에서 한 번만 사용하는 것이 아니므로 다음과 같은 문제가 발생하지 않습니다.
update `%s`
join (
select
t2.*,
1 + sum(case when coalesce(lg,storymain_id) = storymain_id then 0 else 1 end)
over (order by storymain_id) as new_id
from (
select
lag(storymain_id,1) over (order by storymain_id) as lg,
`%s`.*
from `%s`
) t2
) t2
on `%s`.storymain_id = t2.storymain_id
set `%s`.storymain_id = t2.new_id;
그렇지 않으면 MySQL은with
문의 시작 부분에 있는 절:
with t2 as (
select
lag(storymain_id,1) over (order by storymain_id) as lg,
`%s`.*
from `%s`
)
update `%s`
join (
select
t2.*,
1 + sum(case when coalesce(lg,storymain_id) = storymain_id then 0 else 1 end)
over (order by storymain_id) as new_id
from t2
) t
on `%s`.storymain_id = t.storymain_id
set `%s`.storymain_id = t.new_id;
참조:
WITH 절은 다음 컨텍스트에서 허용됩니다.
SELECT, UPDATE 및 DELETE 문 시작 부분.
WITH ... SELECT ...
WITH ... UPDATE ...
WITH ... DELETE ...
언급URL : https://stackoverflow.com/questions/60554438/check-the-manual-the-corresponds-to-your-mariadb-server-version-for-the-right-sy
'source' 카테고리의 다른 글
도커에서 컨테이너와 이미지의 차이점은 무엇입니까? (0) | 2023.08.13 |
---|---|
기호와 일치시킬 정규식: !$%^&*()_+|~-='{}[]:",'<>?,/ (0) | 2023.08.13 |
mysql 명령에서 bash에 선언된 변수를 가장 잘 사용하려면 어떻게 해야 합니까? (0) | 2023.08.13 |
ASP.NET 이상한 컴파일 오류 (0) | 2023.08.13 |
도커 파일을 통해 도커 이미지를 구축하는 동안 cmd 라인을 통해 ENV 변수를 전달할 수 있습니까? (0) | 2023.08.13 |