WHERE가 작동하지 않는 다중 테이블 업데이트
아래 UPDATE 쿼리에서 오류가 발생하는 이유를 이해할 수 있는 사람이 있습니까?
WITH subt AS (
SELECT t.portfolio, s.isin, t.quantity, t.date
FROM transactions t
JOIN stocks s
ON t.stock = s.name
ORDER BY t.id DESC
LIMIT 1
)
UPDATE holdings h
JOIN subt
ON h.portfolio = subt.portfolio
AND h.isin = subt.isin
SET h.end_date = DATE_SUB(subt.date, INTERVAL 1 DAY)
WHERE h.end_date is NULL
표시되는 오류:
SQL 오류(1064):SQL 구문에 오류가 있습니다. 10행에서 'UPDATE holdingsh JOIN 하위 ON.h.sub = sub.h.isin' 근처에서 사용할 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오.
아래의 SELECT는 정상적으로 작동합니다.
WITH subt AS (
SELECT t.portfolio, s.isin, t.quantity, t.date
FROM transactions t
JOIN stocks s
ON t.stock = s.name
ORDER BY t.id DESC
LIMIT 1
)
SELECT h.*
FROM holdings h
JOIN subt
ON h.portfolio = subt.portfolio
AND h.isin = subt.isin
WHERE h.end_date is NULL
HeyidiSQL을 통해 MariaDB 10 데이터베이스로 작업 중입니다.
WITH 결과 대신 하위 쿼리에서 일반 내부 조인을 사용할 수 있습니다.
UPDATE holdings h
JOIN
(
SELECT t.portfolio, s.isin, t.quantity, t.date
FROM transactions t
JOIN stocks s
ON t.stock = s.name
ORDER BY t.id DESC
LIMIT 1
) subt
ON h.portfolio = subt.portfolio
AND h.isin = subt.isin
SET h.end_date = DATE_SUB(subt.date, INTERVAL 1 DAY)
WHERE h.end_date is NULL
언급URL : https://stackoverflow.com/questions/54117604/multiple-table-update-with-where-not-working
'programing' 카테고리의 다른 글
ASP용 사용자 정의 구성원 자격 공급자를 생성하려면 어떻게 해야 합니까?NET MVC 2? (0) | 2023.08.05 |
---|---|
다른 PC에서 라라벨 앱에 액세스하려면 어떻게 해야 합니까? (0) | 2023.08.05 |
장고 모델에서 필드의 기본값을 설정하려면 어떻게 해야 합니까? (0) | 2023.08.05 |
JavaScript Ajax SCRIPT1003: IE 11에는 ':'이 필요합니다. (0) | 2023.08.05 |
도커의 MariaDB 볼륨 구성으로 데이터 삭제 (0) | 2023.08.05 |