Sql 서버 에서 데이터 시트 의 중복 기록 을 삭제 하 는 예

[프로젝트]
데이터베이스 에 users 표,u 포함name,u_pwd 두 필드,그 중 uname 에 중복 항목 이 존재 합 니 다.중복 항목 을 삭제 하 는 것 을 실현 합 니 다!
[분석]
1.임시 표 생 성 newusers,표 구 조 는 users 표 와 같 습 니 다.
2.users 표 에 대해 id 로 순환 하고 users 표 에서 하나의 기록 을 읽 을 때마다 new 를 판단 합 니 다.users 에 같은 u 가 있 는 지 여부name,없 으 면 새 표 에 삽입 합 니 다.같은 항목 이 있 으 면 이 기록 을 무시 합 니 다.
3.users 표를 다른 이름 으로 바 꾸 고 newusers 표 는 users 로 이름 을 바 꾸 어 우리 의 수 요 를 실현 합 니 다.
[절차]

declare @id int,@u_name varchar(50),@u_pwd varchar(50)
set @id=1

while @id<1000
begin
       if exists (select u_name from users where u_id=@id)       
       begin
               select @u_name=u_name,@u_pwd=u_pwd from users where u_id=@id  --
               if not exists (select u_name from new_users where u_name=@u_name) -- U-name
               begin
                       insert into new_users(u_name,u_pwd) values(@u_name,@u_pwd)
               end
       end
       set @id=@id+1
end

select * from new_users

[방법 2]
Users 표 에 같은 name 항목 이 있다 고 가정 하면 id 는 메 인 키 표지 필드 입 니 다.Users 에서 중복 되 는 name 항목 을 삭제 하 라 고 요구 합 니 다.
1.반복 되 지 않 는 ID 를 tmp 1 표 에 저장 합 니 다.
select min([id]) as [id]  into tmp1 from Users group by [name]
2.Users 표 에서 tmp 1 표 의 id 항목 을 선택 하고 해당 id 의 데 이 터 를 표 tmp 2 에 기록 합 니 다.
select * into tmp2 from Users where [id] in( select [id] from tmp1)
3.Users,tmp 1 두 장의 시 계 를 드 롭 합 니 다.
drop table Users 
drop table tmp1
4.tmp 2 표를 User 표 로 바 꿉 니 다.
[주]메 인 키 표지 id 가 없 으 면 표지 필드 를 추가 할 수 있 습 니 다.방법 은 다음 과 같 습 니 다.
select identity(int,1,1) as autoID, * into tmp0 from Users
[상황 3]
User 표 가 있다 고 가정 하면 id 는 메 인 키 표지 필드 이지 만 완전히 중복 되 는 항목 이 있 습 니 다.현재 Users 에서 완전히 중복 되 는 항목 을 제거 하고 하나만 남 겨 두 도록 요구 합 니 다.
1.중복 되 지 않 는 데 이 터 를 tmp 1 표 에 저장 합 니 다.
select distinct * into tmp1 from Users
2、Users 표 삭제
drop table Users
3.tmp 1 표 의 데 이 터 를 Users 표 에 가 져 옵 니 다.
select * into Users from tmp1
4.tmp 1 표 삭제
drop table tmp1

좋은 웹페이지 즐겨찾기