SQL쿼리를 날리다 보면 가끔 ORDER BY 를 이용하여 정렬 후에 GROUP BY (중복제거)를 하고자 하는 경우가 있다.


그래서 생각나는 대로 쿼리를 날릴경우 에러가 발생한다.


SELECT * FROM table_name ORDER BY date DESC GROUP BY col


이 경우에는 그냥 아래와 같이 해주면 된다.


SELECT * FROM (SELECT * FROM table_name ORDER BY date DESC) GROUP BY col

delete from dbo.TABEL_NAME
where PK in
(
select A.PK
from DATABASE A inner join
(
  select max(PK) as , COLUMN, count(*) as cnt
  from dbo.TABLE_NAME
  group by COLUMN
  having count(*) > 1
)B
on A.COLUMN = b.COLUMN
and A.PK <> B.PK
);


테이블 명과 컬럼명 등을 잘 맞춰서 써주면 한가지만 남기고 중복 데이터를 제거할 수 있다

추가적으로 컬럼에 DATETIME이 있고 최근날짜의 값을 남기고 싶다면 order by DATETIME_COLUMN DESC 를 입력해주면 최신의 데이터를 남길 수 있다.

'DataBase' 카테고리의 다른 글

EdgeDB 튜토리얼 무작정 따라하기  (0) 2022.09.29
[MYSQL] order by 후에 group 하는 방법  (0) 2015.02.17

+ Recent posts