程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> Sql Server裡刪除數據表中反復記載的例子

Sql Server裡刪除數據表中反復記載的例子

編輯:MSSQL

Sql Server裡刪除數據表中反復記載的例子。本站提示廣大學習愛好者:(Sql Server裡刪除數據表中反復記載的例子)文章只能為提供參考,不一定能成為您想要的結果。以下是Sql Server裡刪除數據表中反復記載的例子正文


[項目]

數據庫中users表,包括u_name,u_pwd兩個字段,個中u_name存在反復項,如今要完成把反復的項刪除!

[剖析]

1、生成一張暫時表new_users,表構造與users表一樣;
2、對users表按id做一個輪回,每從users表中讀出一個筆記錄,斷定new_users中能否存在有雷同的u_name,假如沒有,則把它拔出新表;假如曾經有了雷同的項,則疏忽此筆記錄;
3、把users表改成其它的稱號,把new_users表更名為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

[辦法二]
假定Users表中有雷同的name項,id為主鍵標識字段。如今請求去失落Users中反復的name項。

1、把不反復的ID保留在一個tmp1內外面。
select min([id]) as [id]  into tmp1 from Users group by [name]
2、從Users表當選取tmp1表中的id項,將響應id的數據寫入表tmp2
select * into tmp2 from Users where [id] in( select [id] from tmp1)
3、把Users、tmp1兩張表Drop失落
drop table Users
drop table tmp1
4、把tmp2表更名為User表

[注]假如沒有主鍵標識id,可以增長一個標識字段,辦法以下:
select identity(int,1,1) as autoID, * into tmp0 from Users

[情形三]
假定有一個User表,id為主鍵標識字段,但有一些完整反復的項。如今請求去失落Users中這些完整反復的項,只保存一條。

1、把不反復的數據保留在tmp1表中
select distinct * into tmp1 from Users
2、把Users表刪除
drop table Users
3、把tmp1表中的數據導入到Users表
select * into Users from tmp1
4、把tmp1表刪除
drop table tmp1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved