SQL Server 一列或多列重复数据的查询,删除
业务需求
最近给公司做一个小工具,把某个数据库(数据源)的数据导进另一个数据(目标数据库)。要求导入目标数据库的数据不能出现重复。但情况是数据源本身就有重复的数据。所以要先清除数据源数据。
于是就把关于重复数据的查询和处理总结一下。这里只可虑基于数据库解决方案。不考虑程序的实现。
环境为:SQL Server 2008
基于数据库的解决方案
数据库测试表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
二、多列重复
数据表结构
查找Original_ID和Match_ID这两列值重复的行
SQL语句
SELECT m.* FROM dbo.Match m,(
SELECT Original_ID,Match_ID
FROM dbo.Match
GROUP BY Original_ID,Match_ID
HAVING COUNT(1)>1 ) AS m1
WHERE m.Original_ID=m1.Original_ID AND m.Match_ID=m1.Match_ID
查询结果

SQL Server 一列或多列重复数据的查询,删除的更多相关文章
- SQL Server使用 LEFT JOIN ON LIKE进行数据关联查询
这是来新公司写的第一篇文章,使用LEFT JOIN ON LIKE处理一下这种问题: SQL视图代码如下: CREATE View [dbo].[VI_SearchCN] AS --搜索产品的文件 ( ...
- SQL Server 一列或多列重复数据的查询,删除(转载)
转载来源:https://www.cnblogs.com/sunxi/p/4572332.html 业务需求 最近给公司做一个小工具,把某个数据库(数据源)的数据导进另一个数据(目标数据库).要求导入 ...
- 关于SQL Server数据库中的标识列
一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列. 该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型 2.在进行插入(Insert)操作时,该列的值 ...
- SQL Server如何在变长列上存储索引
这篇文章我想谈下SQL Server如何在变长列上存储索引.首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: -- Create a new t ...
- SQL Server缺省约束、列约束和表约束
SQL Server缺省约束是SQL Server数据库中的一种约束,下面就为您介绍SQL Server缺省约束.列约束和表约束的定义方法啊,供您参考. SQL Server缺省约束 SQL Serv ...
- SQL Server中Id自增列的最大Id是多少
什么是自增列 在SQL Server中可以将Id列设为自增.即无需为Id指定值,由SQL Server自动给该列赋值,每新增一列Id的值加一,初始值为1. 需要注意的是即使将原先添加的所有数据都删除, ...
- 浅析SQL Server数据库中的伪列以及伪列的含义
SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个 ...
- SQL Server 2016新特性:列存储索引新特性
SQL Server 2016新特性:列存储索引新特性 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的. 非聚集的列存储索引支持筛选条件. 在内存优化表中可以有一个列存储索引,可 ...
- Sql Server中判断表、列不存在则创建的方法[转]
一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法 ? ...
随机推荐
- DevExpress Crack
开发者论坛 DevExpressComponents-16.1.6.16270.exe http://www.dxper.net/thread-7440-1-1.html http://www.dxp ...
- 将NuGet配置到环境变量中
https://docs.nuget.org/consume/command-line-reference Installing The NuGet command line may be insta ...
- Create Hierarchical Tree To Control Records In Oracle Forms
Download Source Code Providing an example form for creating hierarchical trees in Oracle Forms to co ...
- R语言画图基础参数设置
Graphical Parameters You can customize many features of your graphs (fonts, colors, axes, titles) th ...
- Ubuntu14.04设置开机root用户登录
1.sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 2.添加:greeter-show-manual-login=true 3.su ...
- python tools: iPython Notebook
Introducing IPython Notebook IPython isn't a different programming language, it's just a set of comp ...
- hdu 3054 Fibonacci 找循环节的公式题
Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Proble ...
- CSS笔记(四)文本
CSS 文本属性可定义文本的外观.通过文本属性,可以改变文本的颜色.字符间距,对齐文本,装饰文本和对文本进行缩进,等等. 参考:http://www.w3school.com.cn/css/css_t ...
- javascript学习-原生javascript的小特效(改变透明度效果)
前些日子看了个视频所以就模仿它的技术来为大家做出几个简单的JS小特效 ( 以下效果兼容IE5+ IE5-以下没有测试哦) 今天为大家演示的效果是一个div,鼠标经过的时候透明度为100%,鼠标移出的时 ...
- iOS - UISegmentedControl
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UISegmentedControl : UIControl <NSCoding> @available ...