Background Image

FORUM

조회 수 26573 추천 수 0 댓글 11
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
테이블을 생성할 때 시리얼값을 저장하는 필드를 안 만들어서..(물론 unique 인덱스도 안 걸고..)
같은 내용의 데이터가 중복으로 들어갔는데..
중복된 데이터를 삭제하고 싶은데.. 오라클에 rowid 같은 필드가 큐브리드에서는 뭔지 모르겠네요
오라클에서는 이렇게 지우잖아요.
delete from tab1 a where rowid < (select max(rowid) from tab1 a, tab1 b where a.col1 = b.col1);
이렇게 하면 tab1 에서 col1 값이 같은 row 중에서 1건씩만 남고 삭제 되잖아요..

큐브리드에서는 어떻게 하면 되나요?
  • ?
    시난 2009.05.26 01:16
    네! 이럴 땐..
    rownum 을 사용하시면 됩니다.

    == FAQ http://www.cubrid.com/zbxe/32211 =============
    데이타가 중복 입력되어 1개만 남기고 필요없는 것은 지우고자 할때는 다음과 같이 하면 됩니다.

    1개만 남겨두기 위해서는 결과중 2번째부터 끝까지 지우면 된다. 따라서 결과에 대하여 일련번호를 붙일수 있는 rownum을 이용하면 된다.
    rownum 이라는 것은 결과 set 에 대하여 1번 부터 1씩 증가하여 부여되는 중복되지 않는 번호이기 때문이다.
    delete from ... where ... and rownum >= 2
    ==================
    참고하세요. emoticon
  • ?
    김경아 2009.05.26 01:26
    테이블에 데이터가 20만 건이 넘는데...
    where 절에 어떤 내용을 넣어야 되는 거죠?
  • ?
    시난 2009.05.26 02:02
    헉..  그렇다면 중복이 꽤나 많은가보네요..
    중복된 것이 적다면 중복된 시리얼값 조회 조건을 WHERE에 넣으셔서 하면 되는데..

    현재 원하시는 것이 완전히 중복된 것들을 중 일부는 제거하고 단 하나만 남기고 싶은 것인데..
    저도 찾아보고 있답니다. ;;;

    아랫분↓(?)이 금방 답변해주시길 거예요!!
  • ?
    시난 2009.05.26 02:54
    제가 찾은 바로는 현재 원하시는 기능은 딱히 없네요..

    다른 방법으로는 테이블을 동일하게 생성하신 다음, (이번엔 유니크 지정하시고)
    기존 중복적으로 들어간 테이블에서 select unique 컬럼명 FROM 테이블명 - 을 사용하여
    새로운 테이블에 넣고, 기존 테이블을 다른 이름으로 바꾸거나 지우고, 새로운 테이블을 기존 테이블명으로 수정하시면 됩니다.

    ex)
    1. create table tab2( 컬럼1, 컬럼2, ...) ;
    2. insert into tab2 ( ... ) select unique 컬럼1, 컬럼2, ... from tab1 ; --  여기서 중복이 제거가 되어 새로운 테이블에 들어갑니다.
    3. RENAME  tab1 as tab1_bk; -- 테이블명을 변경합니다.
    3. RENAME  tab2 as tab1;

     혹시 다른 방법있다면 알려주세요~!!

  • ?
    김경아 2009.05.26 04:09
    헉... 이런 거 원치 않아요.. ^^ 아시면서..
  • ?
    정만영 2009.05.26 04:39
    tab1 테이블의 name 컬럼에 두 개 이상의 같은 값이 있을 경우 아래와 같이 확인하고 삭제해 보세요.!!
    select col1 from tabl1 group by col1 having count(*) > 1;
    -> 1개 이상의 값을 출력되는지 확인
    delete from tabl1
    where col1 in (select col1 from tabl1 group by col1 having count(*) > 1)
    and rownum > 1
    -> 1개의 중복 값을 찾아 삭제

  • ?
    시난 2009.05.26 04:49
    rownum > 1을 통해 그렇게 할 수도 있군요!
    전 그렇게 하면.. in 안에 구문보다 select/delete 쪽에 먼저 결합될 줄 알았네요.. -.-;;;
    짐작만하고 실행해보지 않은게 아쉽네요..
     emoticon
  • ?
    김경아 2009.05.26 18:45
    delete문 where절에 rownum 을 써 본적이 없는데.. 이런 방법도 있군요..
    땡큐~
  • ?
    김경아 2009.05.26 19:02
    테스트 해 봤는데... 안 되네요.
    where 절의 col1의 모든 값 각각에 대해 rownum 이 먹는 게 아니라
    중복이 있는 col1 전체에서 1건만 제외하고 모든 col1이 삭제됩니다. 1건씩은 남겨야되는데.. 안되네요.
    중복이 있는 행이 10건 이라면, 5건만 삭제하고 5건은 남기고 싶은 건데..
    위의 쿼리대로 하면 9건이 삭제되요 ^^
  • ?
    cubebridge 2009.05.26 19:02
    위와 같은 방법으로 하실 경우 원하시는 결과를 가져올 수 없습니다.
    select로 우선 확인해 보시기 바랍니다.
    제가 이해하기로는 중복되는 데이터의 건수가 다량인 것으로 알고 있습니다. 위와 같이 수행할 경우 최상위 한건에 대해서만 한건을 남기고 정리될 것입니다.
  • ?
    Prototype 2009.05.26 20:20
    저희 제품을 사용해 주셔서 감사합니다.
    중복된 값을 골라서 삭제하는 방법은 다음과 같은 쿼리를 사용하면 가능합니다.

    delete from tab1 where rownum not in (select min(rownum) from tab1 group by col1)

    delete 쿼리문 not in 조건내의 서브쿼리를 적절히 조절하시면, 원하는 row만 남기고 중복된 데이터를 삭제 할 수 있을것입니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 114
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
680 ha 구성시 warning summary 'SP' 질문있어요 2 덴드로비움 2020.12.10 85
679 stored procedure 질문입니다. 3 거북왕 2020.12.11 184
678 Openssl 취약점 패치 문의 2 아스페리타스 2020.12.11 150
677 쿼리 로그를 남기는 트리거 작성 1 도여도여도여도여 2020.12.12 164
676 Cubrid 모니터링 1 세모옹자 2020.12.14 139
675 로그 확인 요청드립니다. 1 file Philip Park 2020.12.17 94
674 SELECT 시 INDEX 를 타고 안타는 차이점 ? 2 Rega 2020.12.17 396
673 마이그레이션 툴킷 관련 질문드립니다. 1 csc0312 2020.12.17 117
672 시스템 뷰 조회 성능 문의 4 bchlim 2020.12.22 167
671 WinNGS 통해서 CM 관리모드 사용할때 8001포트 사용하고 있습니다. 1 Philip Park 2020.12.24 1607
670 샤드 관련 문의 드립니다. 1 레오나르도 2020.12.28 99
669 Cannot cummunicate with broker.. 1 file 진석 2020.12.29 129
668 데이터 볼륨을 추가 하는 명령어 확인 부탁 드립니다. 7 Philip Park 2020.12.29 247
667 TO_DATETIME 함수 문의 드립니다. 2 풍류인생 2020.12.29 434
666 큐브리드 UTF8 일시 3byte 궁금 증 1 덴드로비움 2020.12.29 461
665 방화병 포트 오픈시 양방향 오픈을 해야 하나요? 2 Philip Park 2020.12.29 1753
664 cannot connect to a broker 접속오류 관련 문의 드립니다. 2 zerorogue 2020.12.29 2610
663 usegeneratedkeys 와 같은 기능 사용법 1 망나니개발자 2020.12.30 396
662 큐브리드로 두 날짜간의 년도 차이를 구하고 싶습니다. 1 aaa 2021.01.04 644
661 특정 Table만 백업하는 방법 1 nagh 2021.01.06 538
Board Pagination Prev 1 ... 162 163 164 165 166 167 168 169 170 171 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales