SQL 중복값을 새 테이블로 옮기려고 하면 어떻게 해야 하나요..??

Stonegaze의 이미지

SQLite3를 배우고 있습니다.

제가 가지고 있는 자료를 만지며 연습하다가 궁금증이 생겼는데요, 예를 들어 주민번호가 있는 테이블이라고 할께요.
A테이블에 주민번호가 중복되는 자료가 마구 섞여 있습니다. 여기서 중복되는 자료를 지우지 않고 사사삭 뽑아내어 B라는 테이블를 만들고 싶은데 어떻게 하는지 궁금합니다.

근데.. 할 수는 있는걸까요? ㅠㅠ

chanik의 이미지

테이블 이름이 test_tbl 이고 주민등록번호 컬럼이 scn 이라고 할 때, 아래와 같이 하시면 주민등록번호가 같은 레코드들중 가장 먼저 입력된 레코드 하나만 제외하고 나머지 중복 레코드를 골라내어 새로운 테이블인 dup_tbl에 넣어줄 것입니다. 원본테이블은 그대로 보존됩니다.

CREATE TABLE dup_tbl AS 
  SELECT * FROM test_tbl a 
   WHERE rowid != (SELECT MIN(rowid) FROM test_tbl b WHERE b.scn = a.scn);

동작원리는 간단합니다. SQLite의 테이블에는 rowid라는 숨은 컬럼이 하나씩 있는데, 간단히 테스트해보니 테이블에 레코드가 insert 될 때마다 1씩 증가하는 정수값이더군요. 따라서 이 값이 가장 작은 레코드가 가장 먼저 insert된 레코드인 셈입니다. 만약 중복 레코드중 가장 먼저 insert된 것 말고 가장 늦게 insert된 것을 제외시키고 싶다면 MIN()을 MAX()로 바꾸면 되겠죠.

위의 SQL문을 좀 변형하면 다른 용도로 쓸 수도 있는데요. 아래와 같이 CREATE TABLE 부분을 제거하면, 새 테이블을 만들지 말고 중복데이터 열람만 할 수 있습니다.

  SELECT * FROM test_tbl a 
   WHERE rowid != (SELECT MIN(rowid) FROM test_tbl b WHERE b.scn = a.scn);

만약 원본테이블에서 중복레코드를 제거하고 싶다면 SELECT를 DELETE문으로 바꾸면 되고요.

  DELETE FROM test_tbl a 
   WHERE rowid != (SELECT MIN(rowid) FROM test_tbl b WHERE b.scn = a.scn);

Stonegaze의 이미지

오... 감사합니다.
오늘 오후에 꼭 해보고 말씀드릴께요. ^^b

------------------------------------------------------------------------
컴퓨터를 좋아하는 일반인이에요..

행복하고 싶어요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.