我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql如何去重查询

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql如何去重查询

小编给大家分享一下sql如何去重查询,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

sql去重查询的方法:重复记录根据单个字段peopleId来判断,使用语句删除,代码为【where peopleId in (select  peopleId  from  people  group  by  peopleId 】。

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(*)>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如何去重查询有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql如何去重查询

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql去重查询语句如何写

SQL中可以使用DISTINCT关键字来进行去重查询。例如,要查询一个表中的所有不重复的name值,可以使用以下语句:SELECT DISTINCT name FROM table_name;其中,name是表中的一个列名,table_na
2023-09-14

sql查询如何去掉重复记录

要去掉重复记录,可以使用SQL中的DISTINCT关键字来实现。例如,下面的查询将返回去掉重复记录的结果集:SELECT DISTINCT column1, column2, ...FROM table_name;在上面的查询中,可以指
sql查询如何去掉重复记录
2024-04-09

oracle如何去重查询

oracle 提供多种去重查询方法:distinct 关键字返回每列的唯一值。group by 子句对结果分组并返回每个分组的非重复值。unique 关键字用于创建仅包含唯一行的索引,查询该索引将自动去重。row_number() 函数分配
oracle如何去重查询
2024-06-13

如何用LambdaWrapper去实现去重查询

如何用LambdaWrapper去实现去重查询 我们知道,LambdaWrapper比较好用,但是LambdaWrapper却不能实现select(String s),那只需要进行QueryWrapper与LambdaQueryWrappe
2023-08-17

thinkphp5如何去除重复查询

这篇文章主要讲解了“thinkphp5如何去除重复查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp5如何去除重复查询”吧!一、使用 SELECT DISTINCT 关键字在
2023-07-05

sql语句去重查询怎么写

sql 去重查询使用 distinct 关键字和 select 语句从结果集中移除重复记录。它支持使用 where 子句和 group by 子句进行过滤和分组。示例:select distinct column_name(s) from
sql语句去重查询怎么写
2024-05-30

sql关联查询结果怎么去重

在 SQL 中,我们可以使用 DISTINCT 关键字来去重查询结果。DISTINCT 关键字用于返回唯一不同的值,即去除查询结果中重复的记录。例如,我们可以使用以下语法来去重查询结果:SELECT DISTINCT column1,
sql关联查询结果怎么去重
2024-05-13

sql中去重查询的方法是什么

在SQL中,可以使用DISTINCT关键字来进行去重查询。DISTINCT关键字用于删除SELECT语句返回结果中重复的行。以下是使用DISTINCT关键字进行去重查询的示例:```SELECT DISTINCT 列名1, 列名2, ...
2023-09-16

sql中如何去重

sql 提供以下方法删除重复记录:1. distinct 关键字:选择唯一值一行。2. group by 子句:对数据分组,只返回每组一行(可结合聚合函数)。3. row_number() 函数:为每一行分配唯一行号,选择行号唯一的行。4.
sql中如何去重
2024-05-15

sql中如何使用双重查询

双重查询是一种在 sql 中嵌套查询以从多个表检索数据或执行复杂过滤操作的方法。步骤如下:1. 创建一个子查询,从第一个表中检索所需数据;2. 使用 as 为子查询指定一个别名;3. 在外部查询中,从子查询中检索数据,并添加条件或其他操作过
sql中如何使用双重查询
2024-05-15

MySQL如何查询重复记录并进行去重

可以使用以下方法来查询重复记录并进行去重:查询重复记录:SELECT column1, column2, COUNT(*)FROM table_nameGROUP BY column1, column2HAVING COUNT(*)
MySQL如何查询重复记录并进行去重
2024-03-06

sql如何查询字段重复数据

可以使用 sql 的 group by 和 count() 函数、distinct 和 count() 函数或窗口函数 row_number() 来查询重复字段数据。SQL 查询重复字段数据问题:如何使用 SQL 查询重复字段数据?回答
sql如何查询字段重复数据
2024-06-06

MySQL如何实现连表查询分组去重

这篇文章主要介绍MySQL如何实现连表查询分组去重,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!业务逻辑通过多种渠道将小程序的活动页链接发布出去,比如通过多多种短信附带链接( channel 就记为 sms1,sms
2023-06-20

一次SQL怎么查重及去重

这篇文章主要为大家展示了“一次SQL怎么查重及去重”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“一次SQL怎么查重及去重”这篇文章吧。前言在使用SQL提数的时候,常会遇到表内有重复值的时候,就需
2023-06-29

laravel如何实现模糊查询和去重操作

今天小编给大家分享一下laravel如何实现模糊查询和去重操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、模糊查询La
2023-07-05

编程热搜

目录