sql Server 重复数据的查询,删除

业务需求

最近给公司做一个小工具,把某个数据库(数据源)的数据导进另一个数据(目标数据库)。要求导入目标数据库的数据不能出现重复。但情况是数据源本身就有重复的数据。所以要先清除数据源数据。

于是就把关于重复数据的查询和处理总结一下。这里只可虑基于数据库解决方案。不考虑程序的实现。

环境为:SQL Server 2005和SQL Server 2005

基于数据库的解决方案

数据库测试表dbo.Member

一,带有having条件的分组查询方法

(1)查询某一列重复记录

语句:

  SELECT  Name FROM  dbo.Member t WHERE Name IN (SELECT Name FROM dbo.Member GROUP BY Name HAVING COUNT(Name)>1 ) ORDER BY t.Name

查询结果:

(2)查询某一列不重复的记录

语句:

SELECT * FROM dbo.Member WHERE ID  IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)

查询结果:

(3)清除某一列重复的数据

语句:

 DELETE FROM dbo.Member WHERE ID NOT IN (SELECT MIN(ID) FROM dbo.Member GROUP BY Name)

执行结果:

解释:上面的例子只保存了各自Name的最小值。

二,DISTINCT 的用法
温馨提醒:不支持多列统计Oracle和DB2数据库也适用

利用distinct关键字返回唯一不同的值

(1)查询某一列不重复数据

语句:

  SELECT DISTINCT Name FROM dbo.Member

结果集:

(2)DISTINCT 查询多列不重复(如果查询的列有任何一个不重复,则这条记录视为不重复)

语句:

SELECT DISTINCT Name,Uid FROM dbo.Member
查询结果

DISTINCT 用于统计

语句
 SELECT COUNT(DISTINCT(Name)) FROM dbo.Member
				
时间: 2024-10-20 12:12:29

sql Server 重复数据的查询,删除的相关文章

Sql Server重复数据删除

--在sql2005下可以 ,sql2000不可以 create  table tb(id int,name varchar(4))insert tb select 1,'aa'union all select 1,'aa'union all select 2,'bb'union all select 3,'bb'union all select 4,'cc'union all select 1,'aa'union all select 4,'cc' delete a from  (select

SQL Server对数据进行删除

SQL Server对数据进行删除,把页面的信息从数据库删除. <table border=1px style="width:500px;height:200px;text-align:center;margin: 0 auto"> <tr style="background:red"> <td>编号</td> <td>书名</td> <td>价格</td> <td

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集 XML 介绍 <CustomersOrders> <Customer custid="1" companyname="Customer NRZBB"> <Order orderid="10692" orderdate="2007-10-03T00:00:00&

Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

原文:Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据 XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的X

SQL SERVER之数据查询

 本篇主要讲解查询语句,所有的示例都会按照下面这张表进行. stuID stuName age sex 11090241031 王小虎 21 男 11090241032 王小六 22 男 11090241033 张三 23 男 1.使用where子句查询表中满足条件的记录 比较查询 算术比较查询 算术比较中常用的就是所谓的>.<.<>.=.!<(不小于).!=(不等于)等,比较的语法如下 select* from T_student where age!>30 se

Hyper-v Server重复数据删除技术

Hyper-v Server重复数据删除技术 老衲听说windows Server 2012中新增了一项技术叫做重复数据删除,据说这个重复数据删除可以大大的节省磁盘的空间,下面我们来看看什么是重复数据删除: 重复数据删除指的是在数据中查找和删除重复内容,而不会影响其保真度或完整性.其目标是通过将文件分割成大小可以改变 (32-128 KB) 的小区块.确定重复的区块,然后为每个区块保留一个副本,从而在更小的空间中存储更多的数据.区块的冗余副本由对单个副本的引用所取代.区块会进行压缩,然后以特殊的

SQL Server 变更数据捕获(CDC)

原文:SQL Server 变更数据捕获(CDC) 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/字段/对象更改 概述 变更数据捕获用于捕获应用到 SQL Server 表中的插入.更新和删除活动,并以易于使用的关系格式提供这些变更的详细信息.变更数据捕获所使用的更改表中包含镜像所跟踪源表列结构的列,同时还包含了解所发生的变更所需的元数据. 对表开启了变更捕获之后,对该表的所有DML和DDL操作都会被记录,有助于跟踪表的变化. 测试环境: SQL SERVER 2008

在SQL Server 2016里使用查询存储进行性能调优

作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在一切已经改变,SQL Server开始糟糕, 疯狂的事情不能解释.在这个情况下我介入,分析下整个SQL Server的安装,最后用一些神奇的调查方法找出性能问题的根源. 但很多时候问题的根源是一样的:所谓的计划回归(Plan Regression),即特定查询的执行计划已经改变.昨天SQL Serv

SQL Server对数据进行修改

SQL Server对数据进行修改,修改数据库中的数据. <table border=1px style="width:500px;height:200px;text-align:center;margin: 0 auto"> <tr style="background:red"> <td>编号</td> <td>书名</td> <td>价格</td> <td>