教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

SQL Server中删除重复数据的几个方法(2)

来源:网络收集 时间:2026-07-17
导读: public bool GetVerifyData(string MySQL) { // 数据库SQL语句 string strSQL = @MySQL.Trim().ToString(); // 数据库连接参数(对客户端应用程 // 检验输入数据是否重复函数(SQL Server) public bool GetVerifyData

public bool GetVerifyData(string MySQL)
{
// 数据库SQL语句
string strSQL = @MySQL.Trim().ToString();
// 数据库连接参数(对客户端应用程
// 检验输入数据是否重复函数(SQL Server)
public bool GetVerifyData(string MySQL)
{
// 数据库SQL语句
string strSQL = @MySQL.Trim().ToString();
// 数据库连接参数(对客户端应用程序配置文件的访问)
string strConn = @ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
// 创建连接数据库的一个打开连接
SqlConnection MyConn = new SqlConnection(strConn);
try // 正常运行
{
// 使用 ConnectionString 所指定的属性设置打开数据库连接
MyConn.Open();
// 要对数据库执行的一个SQL语句或存储过程
SqlCommand MyComm = new SqlCommand(strSQL, MyConn);
// 提供一种从数据库读取只进的行流的一种方式
SqlDataReader MyReader = MyComm.ExecuteReader();
// 读取数据,判断是否有数据
if (MyReader.HasRows)
{
Console.Write("<script language=JavaScript>");
Console.Write("alert('系统提示:您输入的资料已经存在,请核对后重新输入!');");
Console.Write("</script>");
if ((MyReader != null) & (MyReader.IsClosed!=true))
{
// 关闭
MyReader.Close();
}
// 返回失败
return false;
}
else
{
if ((MyReader != null) & (MyReader.IsClosed!=true))
{
// 关闭
MyReader.Close();
}
// 返回成功
return true;
}
}
catch (SqlException) // 数据库操作异常处理
{
Console.Write("<script language=JavaScript>");
Console.Write("alert('系统提示:当前数据库操作失败或网络忙,请稍后再试!');");
Consol
e.Write("</script>");
if (MyConn.State == ConnectionState.Open)
{
// 关闭数据库连接
MyConn.Close();
}
// 返回失败
return false;
}

SQL Server中删除重复数据的几个方法

catch // 异常处理
{
if (MyConn.State == ConnectionState.Open)
{
// 关闭数据库连接
MyConn.Close();
}
// 返回失败
return false;
}
finally // 执行完毕清除在try块中分配的任何资源
{
if (MyConn.State == ConnectionState.Open)
{
// 关闭数据库连接
MyConn.Close();
}
}
}

本篇文章来源于:开发学院 原文链接:/2010/0718/24324.php

-----------------
在SQL Server中快速删除重复记录
===========================================================
作者: sqlserver()
发表于: 2006.07.17 21:53
分类: 一般分类
出处: /post/20961/146559
---------------------------------------------------------------

  开发人员的噩梦——删除重复记录


  想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确。解决该问题的办法就是将这些重复的记录删除,只保留其中的一条。


  在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录。因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间。


  四板斧——轻松消除重复记录


  殊不知在SQL Server中有一种更为简单的方法,它不需要用游标,只要写一句简单插入语句就能实现删除重复记录的功能。为了能清楚地表述,我们首先假设存在一个产品信息表Products,其表结构如下:


CREATE TABLE Products (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

  假设产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:


  第一板斧——建立一张具有相同结构的临时表


CREATE TABLE Products_temp (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

  第二板斧——为该表加上索引,并使其忽略重复的值
  方法是在企业管理器中找到上面建立的临时表Produ
cts _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。然后设置索引选项。


  第三板斧——拷贝产品信息到临时表


insert into Products_temp Select * from Products

  此时SQL Server会返回

SQL Server中删除重复数据的几个方法

如下提示:

  服务器: 消息 3604,级别 16,状态 1,行 1

  已忽略重复的键。

  它表明在产品信息临时表Products_temp中不会有重复的行出现。

  第四板斧——将新的数据导入原表
  将原产品信息表Products清空,并将临时表Products_temp中数据导入,最后删除临时表Products_temp。


delete Products
insert into Products select * from Products_temp
drop table Products_temp

  这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。

  小提示:上述方法中删除重复记录取决于创建唯一索引时选择的字段,在实际的操作过程中读者务必首先确认创建的唯一索引字段是否正确,以免将有用的数据删除。

sqlserver 发表于:2006.07.17 21:53 ::分类: ( 一般分类 ) ::阅读:(167079次) :: 评论 (6) re: 在SQL Server中快速删除重复记录 [回复]
好。。实用
13 评论于: 2007.11.17 09:23 re: 在SQL Server中快速删除重复记录 [回复]
非常好的一个方法,作为对SQL还不深入的人员来说,多点小的技巧是非常有用的,多谢楼主分享!!
iasker 评论于: 2007.11.21 12:43 来看一下 [回复]
qhswac希望大家健康平平安安幸福吉祥
hseqakx 评论于: 2008.02.18 18:34 re: 在SQL Server中快速删除重复记录 [回复]
假如说我在produ
ctsID上建了primary key而productName有重复的,怎么办呢?
qq吾爱 评论于: 2008.04.25 15:23 re: 在SQL Server中快速删除重复记录 [回复]
我还以为有什么高招呢!
是让计算机代替了人工操作吗!而且工作量要大多了!


…… 此处隐藏:1755字,全部文档内容请下载后查看。喜欢就下载吧 ……
SQL Server中删除重复数据的几个方法(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/270177.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)