Background Image

FORUM

조회 수 26568 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4441
3926 4.0 beta CUBRID HA관련 문제... 1 반짝이 2011.05.18 21610
3925 4.0 마이그레이션 중 스키마 로드 오류 9 reerror 2011.11.10 18170
3924 4.0 정식판은 언제쯤 나올까요? 2 유니콘 2011.06.28 7945
3923 4.0 최초 설치후 DB 구동 불가 증상 7 reerror 2011.11.10 11196
3922 4.0 패치2 는 언제쯤 나오나요? 3 유니콘 2011.09.28 6864
3921 500M가 넘는 데이터를 올릴려면 어떻게 해야 하죠? 1 pictions 2009.11.03 9014
3920 532번글 답변이 아직 없으셔서 다시 올립니다. 2 초보 2010.02.05 9628
3919 542번글 재질의 2 file 초보 2010.02.09 9780
3918 555번 한글테이블 글 올린 사람입니다 (화면캡쳐함) 1 유니콘 2010.02.23 11764
3917 64 bit 포팅이란? 6 초보대왕 2009.03.31 22003
3916 64BIT 설치시 오류 7 씩~~ 2008.12.26 41557
3915 64bit 9.1버전에서 컬럼 수정시 에러 발생 (에러코드 1046) 1 file 오션나인 2013.08.27 14632
3914 7,1 에서 2008 R2.0 또는 R3.0 으로 마이그레이션 문의 1 마이나스 2010.09.30 7221
3913 7.1 -> 2008로 업그레이드 하면 문제가 없을까요? 3 헬리 2009.10.07 9825
3912 8.2.1버전에서 SQuirreL SQL Client 접속 가능한가요? 1 Philip Park 2010.01.26 13350
3911 8.2.2 HA 구성 중 네트워크 장애 복귀 시 role 전환 문제 3 freemir 2012.03.09 13431
3910 8.2.2 HA 구성 중 웹 서버의 커넥션이 많을 때 동작에 문제가 있습니다. 2 freemir 2012.10.13 11566
3909 8.2.2 HA 사용시 Master / Slave 간 정보 확인 문제 1 freemir 2013.04.01 9165
3908 8.2.2 를 8.4.3으로 변경 시 응용 수정 부분 문의 1 freemir 2012.12.07 5735
3907 8.2.2 버젼 PHP 트랜잭션관련 문의드립니다. 2 secret 반짝이 2014.06.11 7
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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