programing

업데이트 행, 맨 위 행을 가져올 때 내부 결합

oldcodes 2023. 7. 28. 22:35
반응형

업데이트 행, 맨 위 행을 가져올 때 내부 결합

마리아 사용DB

업데이트하려고 합니다.membershipRenewDate(인officiantsDetails표)의 MAX 값 사용renewDate(에)officiantsRenewals표)

내부 결합 켜기officiant_id(두 테이블 모두 동일한 열 이름)

이런 게 있는데 구문 오류가 발생하고 있습니다.

UPDATE officiantsDetails offd 
SET offd.membershipRenewDate = offr.renewDate
FROM (SELECT TOP (1) renewDate, officiant_id FROM officiantsRenewals ORDER BY renewDate DESC ) as offr
WHERE offd.officiant_id = offr.officiant_id

CTE(Common Table Expression)를 사용할 수 있어야 합니다.다음을 사용합니다.WITH"하위 질의"를 정의하는 절, 그리고 나서INNER JOINCTE를 업데이트할 테이블로 이동합니다.다음과 같이 표시됩니다.

WITH Top1RenewDate AS 
(
    SELECT TOP (1) 
        renewDate, 
        officiant_id 
    FROM officiantsRenewals 
    ORDER BY renewDate DESC 
)
UPDATE offd
SET offd.membershipRenewDate = offr.renewDate
FROM officiantsDetails offd
INNER JOIN Top1RenewDate offr ON offd.officiants_id = offr.officiants_id

이 구문은 SQL Server에서도 사용할 수 있습니다. 단, 다음을 추가해야 합니다.;이전에WITH해당 시스템의 키워드입니다.

사용 중인 구문이 MariaDB가 아닙니다.MariaDB에서 다음을 사용할 수 있습니다.JOIN:

UPDATE officiantsDetails offd JOIN
       (SELECT renewDate, officiant_id
        FROM officiantsRenewals
        ORDER BY renewDate DESC
        LIMIT 1
       ) offr
       ON offd.officiant_id = offr.officiant_id
    SET offd.membershipRenewDate = offr.renewDate;

사용 중인 구문은 SQL Server와 더 유사합니다.

언급URL : https://stackoverflow.com/questions/53543300/update-row-inner-join-with-getting-top-row

반응형