sql过滤重复数据几种方法

在开发中经常会碰到关于有重复记录的数据,我们重想办法来过滤一些重复的记录,下面我总结了几种方法,希望对大家有用。

方法一,

 

select identity(int,1,1) as id,* into #temp from tabel
select * from #temp where id in (
select max(id) from #emp where having count(*)>1 group by col1,col2,col3...)

实例

有一个表的结构是这样的

          id                 bookname                             cbs                             zz    
          001               asp教程大全                       清华大学出版社           田正平
          002               数据库教程系统教程         高等教育出版社         周奥英
          003               asp大全                       清华大学出版社           田正平
         
现在我想做一个查询,要查找出的字段如下

            bookname,   cbs,   zz  

按bookname字段过滤记录,但要显示多个字段

查询的结果应为

      bookname                 cbs                                 zz    
      asp大全                   清华大学出版社           田正平
      数据库系统教程     高等教育出版社           周奥英
       
    但是我不知道SQL语句该怎么写法,请大家指导

 

nononono(null,null):的方法可以解决完全重复的问题,如果有若干字段不重复
但还要显示怎么办?
例如上个例子中如果要显示
          id                 bookname                             cbs                             zz       new_id
(重复的记录时new_id是重复的,但其他的与其他的New_id记录不重复)
并且ID显示最大的值。应该怎样解决。
一般使用

Select   Max(id)   id   ,max(bookname)  
bookname,max(cbs)   cbs   ,max(zz)   zz   ,new_id     from   table     group   by   new_id

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

col1+','+col2+','...col5 联合主键

 

select * from table where col1+','+col2+','...col5 in (
select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)

/////////

select   t1.bookname,t1.zz,t1.cbs   from   table   t1
join   (   select   min(id)   as   id,bookname   from   table
              group   by   bookname   )   as   t2
on   t1.bookname   =   t2.bookname   and   t1.id   =   t2.id

时间: 2024-08-01 11:46:35

sql过滤重复数据几种方法的相关文章

sql删除重复数据的详细方法_MsSql

一. 删除完全重复的记录 完全重复的数据,通常是由于没有设置主键/唯一键约束导致的.测试数据: 复制代码 代码如下: if OBJECT_ID('duplicate_all') is not nulldrop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into duplicate_all select 1,100,'aaa' union allse

sql删除重复数据的详细方法

  重复数据,通常有两种:一是完全重复的记录,也就是所有字段的值都一样;二是部分字段值重复的记录. 一. 删除完全重复的记录 完全重复的数据,通常是由于没有设置主键/唯一键约束导致的. 测试数据: if OBJECT_ID('duplicate_all') is not null drop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into dup

Excel剔除单列数据的重复值五种方法介绍

  有时我们在操作数据时,需要剔除单列数据的重复值,下面小编为大家介绍Excel剔除单列数据的重复值五种方法,满足大家的日常需求. 方法一:菜单按钮 如下图,是本次操作的源数据. 单击"数据"选项卡-->"数据工具"功能区-->"删除重复项",弹出"删除重复项"对话框,单击"确定"即可删除单列数据 重复值.如下图所示: 方法二:数据透视表法 依然使用上面的数据源,单击"插入"

SQL删除重复数据方法

原文:SQL删除重复数据方法 例如: id           name         value 1               a                 pp 2               a                 pp 3               b                 iii 4               b                 pp 5               b                 pp 6            

MySQL使用二进制日志来恢复数据二种方法

MySQL使用二进制日志来恢复数据二种方法 如果MySQL服务器启用了二进制日志,你可以使用mysql教程binlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据.关于启用二进制日志的信息,参见5.11.3节,"二进制日志".对于 mysqlbinlog的详细信息,"mysqlbinlog:用于处理二进制日志文件的实用工具". 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选项文件(即m

访问 Microsoft SQL Server 元数据的三种方法

server|访问|数据 访问 Microsoft SQL Server 元数据的三种方法 上海微创软件有限公司 肖桂东 适用读者:Microsoft SQL Server 中.高级用户 元数据简介 元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例.图书馆目录卡和名片等都可以看作是元数据.在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义.比如在管理.维护 SQL Serv

Odbc连SQL Server数据库的几种方法

odbc|server|数据|数据库 Odbc连SQL Server数据库的几种方法   这篇文章是针对在CSDN论坛 中的一些想知道这方面技术的网友而写的.因为最近我本人在论坛上看到很多网友提到这个问题,所以就写了这篇文章,以飨读者. SQL Server 是一种高效的关系数据库系统,它与Windows NT/2000及Windows 9x等操作系统紧密集成.也是今天市场上几种大型关系型数据库(SQL Server\Oracle ybase等)之一.对于今天复杂的B/S服务器系统来说,SQL

sql 删除重复数据

sql 删除重复数据 本文章提供一款mysql删除重复数据,就是数据表中存在二条以上的重复数据,删除编号最小的一条信息. delete `borough_name` as a from fke_borough as a, ( select *,min(id) from fke_borough group by `borough_name` having count(1) > 1 ) as b  where a.`borough_name` = b.`borough_name` and a.id

JavaScript中数组去除重复的三种方法_javascript技巧

废话不多说了,具体方法如下所示: 方法一:返回新数组每个位子类型没变 function outRepeat(a){ var hash=[],arr=[]; for (var i = 0; i < a.length; i++) { hash[a[i]]!=null; if(!hash[a[i]]){ arr.push(a[i]); hash[a[i]]=true; } } console.log(arr); } outRepeat([2,4,4,5,"a","a"