sql去掉重复记录

sql查询去除重复值语句
sql 单表/多表查询去除重复记录
单表distinct

多表group by

group by 必须放在 order by 和 limit之前,不然会报错

************************************************************************************

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(*)>10 SQL查询,如何去除重复的记录?
现在有一个文章评论系统,每篇文章每个用户只有一条评论有效,多回复不进行统计,比如:评论ID文章AID用户UID120122023301430353016405如果想得到某个文章aid对应有多少条有效评论,sql查询怎么写?请注意,每个AID每个用户重复评论只计算一条有效,比如上面的数据应该是5条有效评论,aid为30的文章有一个用户发了2条评论,去掉一个重复。
展开

首先,先说明一个问题。这样的结果出现,说明系统设计是有问题的。

其次
删除重复数据,你要提供你是什么数据库。
不同数据库会有不同的解决方案。

关键字Distinct 去除重复,如下列SQL,去除Test相同的记录;
1. select distinct Test from Table
2. 如果是要删除表中存在的重复记录,那就逻辑处理,如下:
3. select Test from Table group by Test having count(test)>1
4. 先查询存在重复的数据,后面根据条件删除

还有一个更简单的方法可以尝试一下:
select aid, count(distinct uid) from 表名 group by aid
这是sqlserver 的写法。

  • 如图一在数据表中有两个膀胱冲洗重复的记录。

  • 2

    可以通过sql语句“select *from 表名 where 编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2)”来查询出变种所有重复的记录如图二

  • 3

    通过sql语句"

    delete from 表名 where 

    编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2) 

    and 编码 not in (select max(编码)from 表名 group by 编码 having count(1) >=2)

    "来删除重复的记录只保留编码最大的记录

上面的回答可以,不过我觉得还有更简单的方法:
select aid, count(distinct uid) from 表名 group by aid
这是sqlserver 的写法。。。

  关键字Distinct 去除重复,如下列SQL,去除Test相同的记录;

  1. select distinct Test from Table

  2. 如果是要删除表中存在的重复记录,那就逻辑处理,如下:

  3. select Test from Table group by Test having count(test)>1

  4. 先查询存在重复的数据,后面根据条件删除

cad200864位 cmdtux cat 1202 鼠标垫哪种好 informix 函数 宝马118i三厢配置 纽约华尔道夫酒店现状 日本法庭审理制度 局域网 共享文件 小寨赛格鞋子品牌大全 吴世勋双标lay 相位角 火线反击种子 斗鱼包c马段位 vestidos de fiesta 偶极矩的测定ppt 刘汉和他的情人图片 about me好用吗 法医鉴定要多久 studiolee是什么牌子 ug尺寸约束 女户微盘 南航紧急迫降 cad局部放大 黄奕被报私生活照 puma ignite 王者荣耀孙悟空说的话 异度之刃x汉化下载 地下城堡2 奥伦 stream hental视频 如果余生不相忘免费

Copyright 资料库 Some Rights Reserved

如反馈或投诉等情况联系:une35498#163.com