동일디비 제거문의.. 0 5 843

by 킹초보 [2020.09.14 20:15:13]


테이블명 : tbl_borer



tt_no     tt_cm   tt_by    tt_sel     tt_cut      tt_datetime

  1          102     11        4        1.55      2020-09-14 13:00:00

  2          102     10        9        1.55      2020-09-14 13:00:00

  3          102     10        9        1.55      2020-09-14 13:00:00

  4          103     16        7        1.55      2020-09-14 13:00:00

  

 

위 처럼 테이블에 tt_no 3,4 번의 값이 완전 동일합니다.

이런경우 1개만 놔두고 동일한 나머지는 삭제하고합니다.

 

이럴때 쿼리는 어떻게 써야 하는지요..이곳에서도 찾아봤는데요...

응용해 봐도 잘 안되서요. 부탁좀 드립니다.

by pajama [2020.09.14 20:44:24]

row_number() 함수를 사용했습니다. 그런데 tt_no 2,3 번이 같은 것 아닌가요?

select * 
from (select tt_no, 
             tt_cm, 
             tt_by, 
             tt_sel, 
             tt_cut, 
             tt_datetime, 
             row_number() over(partition by tt_cm, tt_by, tt_sel, tt_cut, tt_datetime order by tt_no) rn 
      from tbl_borer)
where rn = 1

 


by 킹초보 [2020.09.17 03:51:54]

소중한 답변 감사합니다. 한번 적용해 보겠습니다.


by 마농 [2020.09.15 14:41:08]

1. 삭제의 의미가? Select 할 때 제외한다는 것인지? 아예 Delete 를 한다는 것인지?
2. 같다는 기준을 tt_no 를 제외한 모든 컬럼으로 할지? 특정 몇개 컬럼으로만 할지?


by 킹초보 [2020.09.17 03:54:04]

1.삭제를 의미합니다.

2. tt_no 을 제외한 전체 컬럼이 동일한 경우 입니다.

위의 예를 기준으로 적용성공시 tt_2 또는 tt_3 이 삭제 되는 것입니다.


by 마농 [2020.09.17 11:34:01]
-- 1. 삭제대상 확인
SELECT *
  FROM tbl_borer
 WHERE tt_no IN (SELECT tt_no
                   FROM (SELECT tt_no
                              , ROW_NUMBER() OVER(
                                PARTITION BY tt_cm, tt_by, tt_sel, tt_cut, tt_datetime ORDER BY tt_no) rn
                           FROM tbl_borer
                         )
                  WHERE rn > 1
                 )
;
-- 2. 삭제
DELETE 
  FROM tbl_borer
 WHERE tt_no IN (SELECT tt_no
                   FROM (SELECT tt_no
                              , ROW_NUMBER() OVER(
                                PARTITION BY tt_cm, tt_by, tt_sel, tt_cut, tt_datetime ORDER BY tt_no) rn
                           FROM tbl_borer
                         )
                  WHERE rn > 1
                 )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입