source

#1093 표 '표'는 '삭제' 대상과 별도의 데이터 소스로 2회 지정

ittop 2023. 8. 10. 21:26
반응형

#1093 표 '표'는 '삭제' 대상과 별도의 데이터 소스로 2회 지정

mysql 쿼리에서 desire 결과를 얻지 못함

많이 찾아봤지만 해결책을 찾지 못했습니다.

DELETE FROM table1 WHERE username NOT IN (select t1.id from table1 as t1
inner join table1 as t2 on t1.username = t2.username and t1.id <= t2.id 
group by t1.username , t1.id having count(*) <= 5 order by t1.username , t1.id desc);

출력은 다음과 같습니다.

query should delete all rows except last 5 rows of each username

당신에게 도움이 될 것입니다.

delete from
    table1
where
    id in ( select
                id
            from
                (   select
                        *,
                        row_number() over(  partition by
                                                username
                                            order by
                                                id desc) as rn
                    from 
                        table1)
            where
                rn > 5)

각 사용자 이름에 대해 최신 5개의 ID를 유지하려는 것 같습니다.가장 간단한 방법은 창 기능을 사용한다고 생각합니다.

delete t1
    from table1 t1 join
         (select t1.*, row_number() over (partition by username order by id desc) as seqnum
          from table1 t1
         ) tt1
         on t1.username = tt1.username and
            t1.id = tt1.id
    where tt1.seqnum > 5;

언급URL : https://stackoverflow.com/questions/57287543/1093-table-table-is-specified-twice-both-as-a-target-for-delete-and-as-a-s

반응형