database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4392 게시물 읽기
No. 4392
access 에서 중복된 값을 지울려면..
작성자
최재환(kkoijae)
작성일
2008-08-13 17:25
조회수
6,422


a  b  c  d  e


1  2  3  4  5 

1  1  1  1  1

2  2  2  2  2

1  2  3  4  5


이렇게 값이 들어가 있습니다...


여기서 1 2 3 4 5 이게 2개 있는걸 하나 지우려 합니다...파일에서 읽어 오기때문에 중복된게 많습니다..


어떻게 해야 하나요..(참고로 MDB 파일입니다.)


distinct 를 썼는데도 안되네요..


select distinct a,b,c,d,e from test where a=1, b=2, c=3,d=4,e=5 ; 이렇게 하면 안되나요??


이 글에 대한 댓글이 총 1건 있습니다.

액세스에서 서브쿼리가 지원되는지 모르겠네요. 안되면 임시테이블 같은 걸 이용하셔가지고 하시면 될 듯 합니다.

일단 재환님께서 질문하신 테이블로 구조가 되어 있으면 한 번에 해결되지 않습니다. 1 2 3 4 5를 중복으로 골라낸다고 해도 삭제 시에는 어떤 녀석을 지울지 알 수 가 없잖아요. 즉, 기본키가 없다는 겁니다. 제가 설명드리는 방식은 기본키가 있다고 가정하고 하겠습니다.

idx(pk)  a    b    c    d    e
=========================
1           1    2    3    4    5
2           1    1    1    1    1
3           2    2    2    2    2
4           1    2    3    4    5
=========================

idx라는 필드를 추가했습니다. 이게 기본키이구요.

select idx
from
(
select a, b, c, d, e, min(idx) as maximum
from test
group by a, b, c, d, e
having count(*) > 1
) as tt
inner join test on test.a = tt.a and test.b = tt.b and test.c = tt.c and test.d = tt.d and test.e = tt.e and test.idx != tt.maximum

이렇게 해보시면 a, b, c, d, e가 동일한 녀석들의 idx를 구해올 수 있습니다. idx가 4번이 나오죠.

delete는 이렇게 처리하셔야겠죠.
delete from test
where idx in
(
 select idx
 from
 (
 select a, b, c, d, e, min(idx) as maximum
 from test
 group by a, b, c, d, e
 having count(*) > 1
 ) as tt
 inner join test on test.a = tt.a and test.b = tt.b and test.c = tt.c and test.d = tt.d and test.e = tt.e and test.idx != tt.maximum
)

답변이 되었는지 모르겠네요. 저같으면 csv로 저장해서 요즘 에디터에 들어가있는 중복 데이터행 삭제 기능으로 중복행을 삭제한 다음 다시 입력해 버리는게 가장 간단할 것 같네요.(기본키가 없다는 가정에서 말입니다.^^;)

지나가다님이 2008-08-19 08:49에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4395복구모델과 트랜젹션로그 백업
김상훈
2008-08-18
5094
43942000에 EM서 테이블디자인 클릭하면 오류나는이유가?? [1]
김영재
2008-08-14
4800
4393스토어드 프로시져 관련 질문입니다. [1]
조동건
2008-08-14
5301
4392access 에서 중복된 값을 지울려면.. [1]
최재환
2008-08-13
6422
4390계층 구조 데이터 조회 시 묶어서 보여주는 방법 [2]
이성재
2008-08-11
5176
4389프로시져에서 100개씩 데이타를 읽어서 하나의 Insert문으로 만들기. [4]
홍성훈
2008-08-11
6668
4388stored procedure만 export 할 수 있나요? [2]
궁금
2008-08-09
6691
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다