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(*)>1)

(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1

(三)
方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max
end

close cur_rows

set rowcount 0

方法二

"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如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)

最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)
查询重复

select * from tablename where id in (select id from tablename

group by id

having count(id) > 1

)

3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

运行会产生问题,where(a.peopleId,a.seq)这样的写发是通不过的!!!

sql 单表/多表查询去除重复记录相关推荐

  1. sqlite查询数据库去除重复记录

    sqlite查询数据库去除重复记录: select *, count(distinct 字段名) from 表明 where 字段名1 = '条件' group by 字段名

  2. mysql 查询不重复的值_在 MySQL 中查询不重复记录值的方法

    使用 WordPress 的过程中,我一直很好奇 WordPress 的一个功能,大家都知道在 WordPress 的编写文章的时候,可以自定义栏目,而这个自定义栏目的数据保存到 wp_postmet ...

  3. 查询数据库重复记录方法

    SQL语句查询数据库重复记录的方法 SQL语句查询数据库重复记录的方法 SQL 语句 查询 数据库 记录SQL语句查询数据库重复记录的方法 假设现有一张人员表(表名:Person),若想将姓名.身份证 ...

  4. kettle开发篇-去除重复记录+排序记录-Day11

    前言: 今天刚好第十一天,从今天开始我们讲5节关于EXCEL的操作,昨天讲了EXCEL表的计算,今天将在计算之前,需要EXCEL表去重再去计算,避免重复数据影响我们的决策.在这就需要用到两个组件,分别 ...

  5. oracle 输出重复记录,ORACLE 去除重复记录

    ORACLE 去除重复记录 delete from tbl_talbe where (col1,col2,col3) in (select col1,col2,col3 from tbl_table ...

  6. SQL 多表查询去除重复

    多个表以上的连接查询时容易出现重复的结果,SqlServer 中 有一个函数 可以 解决这个问题 SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION ...

  7. 查询同一表内多字段同时重复记录的SQL语句

    比如现在有一人员表  (表名:peosons)若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select   p1.*   from   persons   p1,persons   p ...

  8. mysql distinct 去掉查询结果重复记录 可用于多张表连接查询

    在项目中遇到了这个问题,研究了一下,觉得还是很有必要做一下笔记: DISTINCT 关键字解释 使用 DISTINCT 关键字可以去掉查询中某个字段的重复记录,具体字段自己决定. 例子如下: 假设te ...

  9. sql基础查询 多个字段查询——去除重复——计算列——起别名

    -- 查询 名字 年龄 -- 查询语句 同时也是多个字段的查询 select 字段1 ,字段2...from 表名   这个语句查询什么就只会显示什么数据 SELECT      NAME ,-- 姓 ...

最新文章

  1. [转]Java加密算法
  2. 【转载】关于错误:ASP.NET The URL-encoded form data is not valid. .
  3. ubuntu中怎么打开python_如何在Linux Ubuntu 16.04下安装及打开PyCharm
  4. 【并查集】【图论】旅行(ssl 1312)
  5. visio生成数据表图
  6. mysql业务繁忙时能建索引吗_MySQL DBA面试高频三十问
  7. [Leetcode][第97题][JAVA][交错字符串][BFS][动态规划]
  8. tcp协议seq和ack
  9. 剑指Offer——和为s的两个数字
  10. android伸缩动画自定义,Android干货:自定义带动画的View
  11. python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt
  12. 模式识别 算法练习(一)——C均值算法
  13. 简单版俄罗斯方块程序代码c语言,俄罗斯方块C语言程序代码.DOC
  14. 计算机网络信息安全保密制度,档案馆计算机网络系统和信息安全保密制度
  15. js脚本页面自动刷新
  16. html导航栏点击显示该栏内容,点击导航栏,实现下方内容改变
  17. Fast and Accurate Recognition of Chinese Clinical Named Entities with Residual Dilated Convolutions
  18. 一文搞懂css 2D动画效果
  19. 免费的天气API接口
  20. 活码二维码分流规则使用说明

热门文章

  1. python爬虫简单架构原理及示例
  2. JS获取服务上下文,兼容上下文为空场景
  3. ListView高度
  4. 消息(5)——WSE增强的web服务套件,MTOM附件
  5. 在struts2 中通过ActionContext访问Session对象
  6. SpringBoot集成ActiveMq消息队列实现即时和延迟处理
  7. linux下面实时查看进程,内存以及cpu使用情况使用命令
  8. 【算法笔记】B1058 选择题
  9. Python列表和字典的本质和区别
  10. 中国诗歌艺术8诗的魅惑:中国诗歌的几个基本元素之不循常规的语序