IT

마리아에서 'DEELETE'에 대해 지정된 Twice 테이블DB

itgroup 2023. 7. 27. 21:54
반응형

마리아에서 'DEELETE'에 대해 지정된 Twice 테이블DB

마리아의 일부 레코드를 삭제하기 위해 쿼리를 만들었습니다.DB

쿼리:

DELETE 
FROM
    HrAttLogsFormatted 
WHERE
    DateIn = '2019-04-10' 
    AND Late != '' 
    AND ( FingerId, CreatedDate ) IN (
    SELECT
        FingerId,
        MAX( CreatedDate ) 
    FROM
        HrAttLogsFormatted 
    WHERE
        DateIn = '2019-04-10' 
        AND Late != '' 
        AND FingerId IN ( SELECT FingerId FROM HrAttLogsFormatted WHERE DateIn = '2019-04-10' AND Late != '' GROUP BY FingerId HAVING COUNT( FingerId ) > 1 ) 
    GROUP BY
    FingerId 
)

결과:

표 'HrAttLogsFormated'가 'DELEATE'의 대상과 데이터에 대한 별도의 서치로 두 번 지정되었습니다.

하지만 제가 실패한 질문으로 해결할 수 있는 방법이 있을까요?

잘 부탁드립니다.

[EDIT-SOLUBLED] 신청과 질의만으로 해결됩니다.

DELETE t1
FROM HrAttLogsFormatted t1
INNER JOIN
(
    SELECT FingerId, MinCreatedDate
    FROM
    (
        SELECT FingerId, MIN(CreatedDate) AS MinCreatedDate
        FROM HrAttLogsFormatted 
        WHERE DateIn = '2019-05-03' AND Late != ''
        GROUP BY FingerId HAVING COUNT(FingerId) > 1
    ) x
) t2
    ON t1.FingerId = t2.FingerId AND t1.CreatedDate = t2.MinCreatedDate;

이 문서를 삭제 가입으로 작성해 보겠습니다.

DELETE t1
FROM HrAttLogsFormatted t1
INNER JOIN
(
    SELECT FingerId, MIN(CreatedDate) AS MinCreatedDate
    FROM HrAttLogsFormatted 
    WHERE DateIn = '2019-04-10' AND Late != ''
    GROUP BY FingerId
    HAVING COUNT(FingerId) > 1
) t2
    ON t1.FingerId = t2.FingerId AND t1.CreatedDate = t2.MinCreatedDate;

만약 당신이 당신의 현재 쿼리를 고수하고 싶다면, 당신은 그것이 작동하도록 당신의 주변에 추가적인 하위 쿼리를 추가할 수 있을 것입니다.WHERE IN절:

AND (FingerId, CreatedDate) IN (
    SELECT FingerId, MinCreatedDate
    FROM
    (
        SELECT FingerId, MIN(CreatedDate) AS MinCreatedDate
        FROM HrAttLogsFormatted
        ...
    ) x )

하지만 제가 준 버전이 더 간단하기 때문에 사용할 것입니다.

언급URL : https://stackoverflow.com/questions/55998410/specified-twice-table-for-delete-in-mariadb

반응형