if not object_id('Tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,[Name] nvarchar(),[Memo] nvarchar())
Insert #T
select ,N'A',N'A1' union all
select ,N'A',N'A2' union all
select ,N'A',N'A3' union all
select ,N'B',N'B1' union all
select ,N'B',N'B2'
Go --I、Name相同ID最小的记录(推荐用1,,),方法3在SQl05时,效率高于1、
方法1:
Select * from #T a where not exists(select from #T where Name=a.Name and ID<a.ID) 方法2:
select a.* from #T a join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID 方法3:
select * from #T a where ID=(select min(ID) from #T where Name=a.Name) 方法4:
select a.* from #T a join #T b on a.Name=b.Name and a.ID>=b.ID group by a.ID,a.Name,a.Memo having count()= 方法5:
select * from #T a group by ID,Name,Memo having ID=(select min(ID)from #T where Name=a.Name) 方法6:
select * from #T a where (select count() from #T where Name=a.Name and ID<a.ID)= 方法7:
select * from #T a where ID=(select top ID from #T where Name=a.name order by ID) 方法8:
select * from #T a where ID!>all(select ID from #T where Name=a.Name) 方法9(注:ID为唯一时可用):
select * from #T a where ID in(select min(ID) from #T group by Name) --SQL2005: 方法10:
select ID,Name,Memo from (select *,min(ID)over(partition by Name) as MinID from #T a)T where ID=MinID 方法11: select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID) as MinID from #T a)T where MinID= 生成结果:
/*
ID Name Memo
----------- ---- ----
1 A A1
4 B B1 (2 行受影响)
*/ --II、Name相同ID最大的记录,与min相反:
方法1:
Select * from #T a where not exists(select from #T where Name=a.Name and ID>a.ID) 方法2:
select a.* from #T a join (select max(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID order by ID 方法3:
select * from #T a where ID=(select max(ID) from #T where Name=a.Name) order by ID 方法4:
select a.* from #T a join #T b on a.Name=b.Name and a.ID<=b.ID group by a.ID,a.Name,a.Memo having count()= 方法5:
select * from #T a group by ID,Name,Memo having ID=(select max(ID)from #T where Name=a.Name) 方法6:
select * from #T a where (select count() from #T where Name=a.Name and ID>a.ID)= 方法7:
select * from #T a where ID=(select top ID from #T where Name=a.name order by ID desc) 方法8:
select * from #T a where ID!<all(select ID from #T where Name=a.Name) 方法9(注:ID为唯一时可用):
select * from #T a where ID in(select max(ID) from #T group by Name) --SQL2005: 方法10:
select ID,Name,Memo from (select *,max(ID)over(partition by Name) as MinID from #T a)T where ID=MinID 方法11:
select ID,Name,Memo from (select *,row_number()over(partition by Name order by ID desc) as MinID from #T a)T where MinID= 生成结果2:
/*
ID Name Memo
----------- ---- ----
3 A A3
5 B B2 (2 行受影响)
*/ 如果还不能解决问题 建议楼主给出具体需求 是根据哪个字段来去重复的

这个是我在CSDN论坛中找到的资料,原文在:http://bbs.csdn.net/topics/390315926

以上内容就在2楼

SQL中的去重操作的更多相关文章

  1. SQL点滴33—SQL中的字符串操作

    原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() ...

  2. SQL中的join操作总结(非常好)

    1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...

  3. SQL中union运算操作的理解

    在SQL中,对于并运算,可以使用union关键字. 例如: SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FRO ...

  4. my sql中join的操作

    SQL标准中的Join的类型:  首先,设置表employees和department的数据为:  1.inner join … on操作类型 内连接inner join是基于连接谓词将两张表(如A和 ...

  5. SQL中GETDATE()一些操作

    Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVE ...

  6. 那些年我们踩过的坑,SQL 中的空值陷阱!

    文章目录 NULL 即是空 三值逻辑 空值比较 NOT IN 与空值 函数与空值 DISTINCT.GROUP BY.UNION 与空值 ORDER BY 与空值 空值处理函数 字段约束与空值 SQL ...

  7. 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  8. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  9. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作

    http://www.cnblogs.com/wgp13x/p/4934521.html 内容一样,样式好的版本. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据 ...

随机推荐

  1. 【POJ 1182 食物链】并查集

    此题按照<挑战程序设计竞赛(第2版)>P89的解法,不容易想到,但想清楚了代码还是比较直观的. 并查集模板(包含了记录高度的rank数组和查询时状态压缩) *; int par[MAX_N ...

  2. 【ThinkPHP学习】ThinkPHP自己主动转义存储富文本编辑器内容导致读取出错

    RT. ThinkPHP的conf文件里的Convention.php有一个配置选项 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认參数过滤方法 用于 ...

  3. 深入理解JVM : Java垃圾收集器

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾收集器都可能会有很大差 ...

  4. SQL中两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

  5. 在Activity中动态设置TextView的隐藏属性

    if (true) { //显示 viewHolder.tvLine.setVisibility(View.INVISIBLE);} else { //不显示 viewHolder.tvLine.se ...

  6. MVC 传参

    介绍一些View中常用的东西 1:传递参数: 1):路由协议中传递参数: 1):eg:比如是这样类似的路由协议,那么我们在传递参数的时候,就要传递 id过去,当然如果,ABCD= UrlParamet ...

  7. Excel 用row()函数 在Excel中自动添加序号,

    1.如图 2.用if条件根据产品名称判断是否有值进而序号自动添加 If(G9="","",Row()-8)

  8. 可以通过Action来判断是什么操作触发了事件

    ObservableCollection<T>当这个集合发生改变后会有相应的事件得到通知请看如下代码: static void Main(string[] args) { var a = ...

  9. poj2752Seek the Name, Seek the Fame

    Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and ...

  10. Inno setup卸载前退出进程、删除文件夹

    [Code]function InitializeUninstall(): Boolean; var MainRun: HWND; var MVRun:HWND; begin// FindWindow ...