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

时间: 2024-11-23 15:38:09

Sql Server里删除数据表中重复记录的例子的相关文章

Sql Server里删除数据表中重复记录的例子_MsSql

[项目] 数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除! [分析] 1.生成一张临时表new_users,表结构与users表一样: 2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录: 3.把users表改为其它的名称,把new_users表改名为users,实现我们的需要. [程序] 复制代

sql过滤、删除、表中重复记录语句

文章介绍利用having group by 及各种select in 联合查询来实现的多种不同方法的过滤重复记录的sql语名. - 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下 select * from people where peopleId in (select   peopleId  from   people  group  by   peopleId  having  count(peopleId) > 1) 2.删除表中多余的重复记录,重

如何有条件的分步删除数据表中的记录

数据|条件 如何有条件的分步删除数据表中的记录作者:eygle出处:http://blog.eygle.com日期:February 22, 2005« 自己动手,丰衣足食 | Blog首页 有时候我们需要分配删除数据表的一些记录,分批提交以减少对于Undo的使用,本文提供一个简单的存储过程用于实现该逻辑.你可以根据你的需要进行适当调整,本例仅供参考: SQL> create table test as select * from dba_objects;Table created.SQL>

看实例学VFP:删除数据表中的记录

本例对看实例学VFP:对数据表中记录进行修改一文的实例进行了一点改进,增加了"撤消"功能.程序运行时如下图: 在组合框中选择要查找的字段,在文本框中输入查找内容后单击右侧的"查找"按钮后将查找结果显示在上方的表格中,"查找"按钮变成"撤消"按钮,同时激活"删除"按钮及用于显示数据的文本框,并将当前记录(满足查询条件的记录)的值同时显示在文本框中,:单击"删除"按钮后会删除查找出来的记录刷

高效快速删除Oracle表中重复记录

以前的一篇删除重复记录的虽然还不错 但是在我遇到重量级的大表时还是显的力不从心,不小心想到一种新的方法 思路1.保存不重复的记录 2.保存重复记录中的一个rowid //3.删除原表中rowid不为步骤2中rowid的记录 ,留下重复数据中的一条 3.找出记录中rowid为步骤2中rowid的记录 4 .1和3数据连接就是所要的数据了 具体操作例子 第一步:www.examw.com SQL> create table xxfgs_sig as (select imeid imeid,max(d

Sql Server中清空所有数据表中的记录_MsSql

Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 复制代码 代码如下: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: 复制代码 代码如下: exec sp_msforeachtable 'delete   N''?''' 清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之

SQL Server数据库删除数据集中重复数据实例讲解_MsSql

SQL Server数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除.如何删除呢?本文我们通过一个例子来加以说明. 例子如下: 如下只要companyName,invoiceNumber,customerNumber三者都相同,我们则认为是重复数据,下面的例子演示了如何删除. declare @InvoiceListMaster table ( ID int identity primary key , companyName Nchar(20), i

SQL Server数据库删除数据集中重复数据实例讲解

SQL Server数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除.如何删除呢?本文我们通过一个例子来加以说明. 例子如下: 如下只要companyName,invoiceNumber,customerNumber三者都相同,我们则认为是重复数据,下面的例子演示了如何删除. declare @InvoiceListMaster table ( ID int identity primary key , companyName Nchar(20), i

Sql Server中清空所有数据表中的记录

清空所有数据表中的记录: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: exec sp_msforeachtable 'delete   N''?'''