Background Image

FORUM

조회 수 26570 추천 수 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 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
934 전자정부 프레임워크와 큐브리드 연동하는 방법 알려주세요 1 mytoky 2013.08.29 19202
933 전자정부표준프레임워크 BLOB insert질문합니다 1 poooh 2013.10.24 47436
932 전자정부표준프레임워크 recordset 프로시져 호출 1 없음 2022.01.10 274
931 전체 데이터 용량과 데이터 건수 1 쫑쫑이 2020.09.08 577
930 전체 복구 이후 증분 복구가 오류 납니다. 3 coolkkm 2017.10.20 236
929 전체 자동시작이 되지 않습니다. 2 또랑 2010.12.03 8003
928 전체백업과 아키이브 파일 복원 문의 4 coolkkm 2018.01.26 389
927 전체테이블 1 삐삐 2019.01.28 115
926 접속 자동으로 끊김 6 secret moon 2014.12.24 20
925 접속이 많으면 브로커 에러가 납니다 ㅠㅠ... 1 secret 광황제 2013.11.04 11
924 접속자의 아이피나 맥어드레스를 알아낼수 있는지요 3 유니콘 2012.12.05 10956
923 접속제한 설정 질문드립니다 2 유니콘 2011.12.24 12721
922 정규식 사용법에 대해서 궁금합니다.. 1 큐브리드어려워요 2022.01.11 715
921 정기 교육 관련 문의 드립니다. 1 kings 2012.06.22 6205
920 정기교육 문의 1 마루 2013.01.30 5269
919 정수 변환 2 현수 2019.10.05 805
918 정수/정수 결과를 소수로 출력하게 하는법 1 file suyeon 2022.02.23 197
917 정수와 정수의 나누기.. 1 파란토끼 2013.10.08 10719
916 제로보드 4 이용중인데 최신게시물 불러오기에서 힘드네요 1 secret 헬리 2009.06.03 11
915 제약조건 비활성화 1 삽질중 2009.10.28 9612
Board Pagination Prev 1 ... 149 150 151 152 153 154 155 156 157 158 ... 200 Next
/ 200

Contact Cubrid

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