PDF 다운로드 PDF 다운로드

오라클에서 작업할 때, 중복된 기록이 있을 수 있다. 중복 기록을 식별하거나 RowID를 쓰거나 열 주소로 중복된 열을 삭제할 수 있다. 시작하기 전에, 기록을 삭제하고 참고할 경우에 대비해 백업 테이블을 만들어야 한다.

방법 1
방법 1 의 4:

중복된 기록 식별하기

PDF 다운로드
  1. 이 경우 예시로 "Alan"과 같은 중복 기록이 있는지 확인한다. 삭제하고자 하는 기록이 실제로 중복인지 밑에 있는 SQL에 입력해서 확인해야 한다.
  2. 행 이름이 "Names"인 경우, "column_name" 에 Nmaes를 넣는다.
  3. 다른 행에서 중복 기록을 식별하려고 하는 경우, 예를 들어 이름 Alan이 아닌 Alan의 age에서 식별한다면, "column_name"에 "Ages"를 입력하는 식으로 하면 된다.
     select 
     column_name 
     , 
     count 
     ( 
     column_name 
     ) 
     from 
     table 
     group 
     by 
     column_name 
     having 
     count 
     ( 
     column_name 
     ) 
     > 
     1 
     ; 
    
    광고
방법 2
방법 2 의 4:

중복 기록 하나 삭제하기

PDF 다운로드
  1. 구조적 쿼리 언어를 뜻하는 "SQL" 다음에 "select name from names"를 입력한다.
  2. "SQL" 다음에 "delete from names where name='Alan';."을 입력한다. 여기서 대문자에 주의해야 한다. 이렇게 하면 "Alan"이라는 열이 모두 삭제된다. "SQL" 다음에 "commit"을 입력한다. [1]
  3. 이제 "Alan"이라는 이름이 있는 열을 모두 삭제했으니, "insert into name values ('Alan');."을 입력하여 하나를 다시 넣을 수 있다. "SQL" 뒤에 "commit" 을 입력하여 새로운 열을 만들 수 있다.
  4. 위의 단계를 따라 했다면 "select * from names"을 입력하여 중복된 기록이 더이상 없는지 확인할 수 있다.
     SQL 
     > 
     select 
     name 
     from 
     names 
     ; 
     NAME 
     
    Alan Carrie Tom Alan rows selected . SQL > delete from names where name = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into names values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from names ; NAME
    Alan Carrie Tom rows selected .
    광고
방법 3
방법 3 의 4:

여러 가지 중복기록 삭제하기

PDF 다운로드
  1. "SQL" 뒤에 "select rowid, name from names;."를 입력한다.
  2. "SQL" 뒤에 "delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);"을 입력하여 중복된 기록을 삭제한다. [2]
  3. 위의 단계가 끝나면 "select rowid,name from names;"을 입력하고 "commit" 을 입력하여 중복 기록이 있는지 명령어로 확인한다.
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAB 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     AABJnsAAGAAAdfOAAF 
     Alan 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     ); 
     rows 
     deleted 
     . 
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    광고
방법 4
방법 4 의 4:

행으로 열을 삭제하기

PDF 다운로드
  1. "SQL" 다음에 "select * from names;" 를 입력하여 열을 확인한다.
  2. "SQL'" 다음에 "delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);" 를 입력하여 중복된 기록을 삭제한다. [3]
  3. 위의 단계가 끝나면 "select * from names;" 그리고 "commit" 을 순서대로 입력하여 중복 기록이 확실히 지워졌는지 확인한다.
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     Alan 
     50 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     and 
     b 
     . 
     age 
     = 
     a 
     . 
     age 
     ); 
     row 
     deleted 
     . 
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    광고

경고

  • 로그인을 해야 볼 수 있는 백업 테이블을 만들어서 지우기 전에 뭐가 있었는지 확인할 수 있도록 한다(의문이 생기는 경우에 대비해서)
     SQL 
     > 
     create 
     table 
     alan 
     . 
     names_backup 
     as 
     select 
     * 
     from 
     names 
     ; 
     Table 
     created 
     . 
    
광고

이 위키하우에 대하여

이 문서는 2,417 번 조회 되었습니다.

이 글이 도움이 되었나요?

광고