sql语句查询重复的数据

查找所有重复标题的记录:

SELECT *
FROM t_info a
WHERE ((SELECT
COUNT(*)
FROM t_info
WHERE Title = a.Title) > 1)
ORDER BY Title
DESC

一。查找重复记录

1。查找全部重复记录

Select * From 表 Where 重复字段 In
(Select 重复字段 From 表 Group By 重复字段 Having
Count(*)>1)

2。过滤重复记录(只显示一条)

Select * From HZT Where ID In
(Select Max(ID) From HZT Group By
Title)

注:此处显示ID最大一条记录

二。删除重复记录

1。删除全部重复记录(慎用)


Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having
Count(*)>1)

2。保留一条(这个应该是大多数人所需要的 ^_^)

Delete HZT Where ID Not
In (Select Max(ID) From HZT Group By
Title)

注:此处保留ID最大一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select
* from people

where peopleId in (select peopleId from people group by
peopleId having count(peopleId) >
1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete
from people

where peopleId in (select peopleId from people group by
peopleId having count(peopleId) > 1)

and rowid not in (select
min(rowid) from people group by peopleId having count(peopleId
)>1)

3、查找表中多余的重复记录(多个字段)

select * from vitae
a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by
peopleId,seq having count(*) >
1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae
a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by
peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid)
from vitae group by peopleId,seq having
count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select *
from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae
group by peopleId,seq having count(*) > 1)

and rowid not in (select
min(rowid) from vitae group by peopleId,seq having
count(*)>1)

补充:

有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select
distinct * from
tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select
distinct * into #Tmp from tableName

drop table tableName

select *
into tableName from #Tmp

drop table
#Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select
identity(int,1,1) as autoID, * into #Tmp from tableName

select
min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select *
from #Tmp where autoID in(select autoID from #tmp2)

sql语句查询重复的数据,布布扣,bubuko.com

时间: 2024-10-08 21:24:50

sql语句查询重复的数据的相关文章

sql语句查询月份的数据

在实际项目中,经常需要按月查询数据,在这里把我用到的sql整理一下,以便日后查看. 例如,查询当月的数据 select * from T_User where convert(varchar(6),addtime,112)=convert(varchar(6),getdate(),112) 查询结果: 查询上月的数据,需要用另一个sql函数,dateadd,具体如下 select * from T_User where convert(varchar(6),addtime,112)=conver

使用SQL语句查询Elasticsearch索引数据

Elasticsearch 的官方查询语言是 Query DSL,存在毕竟有存在的道理,存在即合理.SQL 作为一个数据库查询语言,它语法简洁,书写方便而且大部分服务端程序员都清楚了解和熟知它的写法.但是作为一个 ES 萌新来说,就算他已经是一位编程界的老江湖,但是如果他不熟悉 ES ,那么他如果要使用公司已经搭好的 ES 服务,他必须要先学习 Query DSL,学习成本也是一项影响技术开发进度的因素而且不稳定性高.但是如果 ES 查询支持 SQL的话,那么也许就算他是工作一两年的同学,他虽然

django -----原生SQL语句查询与前端数据传递?

view.py中 import MySQL def request_data(request): if request.method == "GET": conn = MySQLdb.Connect( host ='my_ip', port = 3306, user = 'my_user', passwd = 'my_passwd', db = 'my_db', charset = 'utf8' ) cursor = conn.cursor() cursor.execute("

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

sql语句查询后几行数据并倒着排列

$conn = mysql_connect("数据库地址","用户名","密码"); if(!$conn) { die("mysql conn failed"); } else{ mysql_query("SET NAMES 'utf8'"); mysql_select_db("数据表",$conn); if(!$conn) { die("database selected f

使用sql语句查询日期在一定时间内的数据

使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0   //查询当天日期在一周年的数据 select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0   //查询当天的所有数据 SELECT * FROM A where datediff(d,datetime,getdate()) <=30 //前30天 S

如何用SQL语句查询Excel数据?

如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOpenDataSource( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$] 复制代码

转 mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据

转自 http://blog.csdn.net/ve_love/article/details/19685399 转 mysql 中sql 语句查询今天.昨天.7天.近30天.本月.上一月 数据

提高SQL语句查询效率

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放