프로그래밍/DB

[DB] MSSQL 중복데이터 확인, 중복값제거 쿼리문

ss-pro 2020. 10. 9. 01:04
반응형

데이터베이스에 저장된 항목중 중복값에 대하여 검색해야할 경우이 있습니다. 관련부분 사용시 확인하는 쿼리문입니다. 

1. 중복데이터 확인방법
group by문을 사용하여 중복데이터가 확인이 가능합니다.  중복값으로 검색하고싶은 필드를 group by문을 사용하여 그룹을 표기합니다.  having문을 사용하여 group by 결과값에 대한 조건을 삽입합니다.  2건이상에 데이터가 있을경우는 중복임을 알수 있습니다. 

1
2
3
SELECT [name],count(*) cnt  FROM MyUser 
Group by [name]
having count(*> 1

2. 중복데이터 제거방법
distinct 함수를 사용하면 중복데이터를 제거한후 결과값을 얻을수 있습니다.  중복을 제거하고 싶은 필드값에 distinct함수를 넣고 조회하면 해당필드의 중복된값을 제거되어 출력됩니다. 

1
select distinct(name),gender  from MyUser

3. 테스트 스크립트 전체

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
create table MyUser
(
    id int     identity(1,1primary key not null,
    [name] varchar (20)   ,
    gender char(1)
)
go
 
insert into MyUser VALUES ('홍길동','M')
insert into MyUser VALUES ('홍길동','F')
insert into MyUser VALUES ('홍길동','F')
insert into MyUser VALUES ('홍길동','F')
insert into MyUser VALUES ('김단비','M')
insert into MyUser VALUES ('김단비','M')
insert into MyUser VALUES ('이영자','M')
insert into MyUser VALUES ('테스트','F')
 
 
select *  from MyUser
 
SELECT [name],count(*) cnt  FROM MyUser 
Group by [name]
having count(*> 1
 
 
select distinct(name),gender  from MyUser

쿼리결과를 살펴보면 아래와 같습니다.  group by문의 name이 그룹화되며 count(*)값으로 해당값이 몇건이 나온지 확인할수 있습니다.