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 4443
1047 PHP + Apache + Cubrid 연동 질문 입니다. 3 지누 2011.07.27 11347
1046 Oracle 사용자 팁 문의 1 비형여자 2011.07.26 9689
1045 exception 문의 1 비형여자 2011.07.22 7839
1044 CUBRID DB 호스팅 시 UTF-8 타입 사용. 1 ezzone 2011.07.19 7656
1043 데이타베이스 또는 테이블스페이스 생성 시 자동증가 옵션이 어떻게 되는지?? 3 풀소리 2011.07.19 9849
1042 HA 복제시 매니저에서의 테이블 생성 1 유니콘 2011.07.15 18502
1041 [급]Cubrid메니저에서 Unlod 후 load시 오류 3 file 별솔아범 2011.07.15 23906
1040 HA관련 CUBRID Manager 에서 대시보드 문의드립니다... 2 file 반짝이 2011.07.13 25736
1039 JSP에서 데이터베이스 연결 어떻게 해요? 1 JH 2011.07.12 12167
1038 migration tool을 이용해 마이그레이션 작업 중 테이블의 데이터 적재 실패 문제 6 엔하늘 2011.07.11 10171
1037 PDO가 지원되고 있는 건가요? 1 kkh 2011.07.09 10663
1036 garbage_collection=yes 설정시 CM(테이블편집-SQL문 탭) 문제입니다... 3 file 반짝이 2011.07.09 8646
1035 3.1에서 4.0 업그레이드 후 4 유겸아빠 2011.07.08 8037
1034 4.0 HA ha_db_list 설정 관련 질문드립니다. 7 반짝이 2011.07.08 24401
1033 php driver interface...x64 4 platanus 2011.07.08 7661
1032 참조를 이용해서 찾을때 인덱스를 태울려면 어떻게 하나요? 2 안지민 2011.07.08 7538
1031 큐브리드 서비스 시작시 오류메시지 해결 방법 5 종이 2011.07.05 13596
1030 Sulinux 64Bit 와 CUBRID 4.0 정식 버젼 체크좀 부탁드립니다... 5 반짝이 2011.07.05 8446
1029 CUBRID 4.0 64bit & SULinux 2.0 64Bit service start 시 manager fail 발생합니다.. 2 반짝이 2011.07.02 10058
1028 cci_connect 의 에러코드에 관하여 질문드립니다 7 엥꼬 2011.06.29 9886
Board Pagination Prev 1 ... 143 144 145 146 147 148 149 150 151 152 ... 200 Next
/ 200

Contact Cubrid

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