在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

sql如何去重查询

129次阅读
没有评论

共计 2591 个字符,预计需要花费 7 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 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
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 如何去重查询有了一定的了解,想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计2591字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 一出一进一爽一粗一大视频 | 亚洲av成人无码精品网站老司机 | 久久久久亚洲av片无码下载蜜桃 | 在线播放成人高清免费视频 | 欧美一级特黄aa大片视频 | 日本a级视频在线播放 | 国产不卡高清 | 亚洲成av人在线观看天堂无码 | 人妻熟妇乱又伦精品视频 | 天天干天天天天 | 一色屋精品免费视频 视频 一色屋精品视频在线观看 一色屋色费精品视频在线观看 | 99久久精品免费看国产免费软件 | 国产又猛又黄又爽 | 一级一片一a一片 | 97se狠狠狠狼鲁亚洲综合网 | 国产成人免费午夜性视频 | 欧美性猛交xxxx免费看 | 精品日韩欧美一区二区三区 | 国产精品丝袜高跟鞋 | 久久新| 天天拍天天干天天操 | 日本一级视频网站在线 | 伊人久久久综在合线久久在播 | 中文字幕精品无码一区二区 | 99精品国产一区二区三区不卡 | 99re热这里有精品首页视频 | 中文无码人妻有码人妻中文字幕 | 四虎视频在线精品免费观看 | 99国产精品一区二区 | a级毛片在线视频免费观看 a级免费 | 国产精品r级最新在线观看 国产精品sp调教打屁股 | 国产成人免费高清视频网址 | 99影视| 精品国产一区二区三区av片 | 成人欧美一级毛片免费观看 | 欧美日韩中文字幕久久伊人 | 久久免费在线视频 | 亚洲av无码专区国产乱码4se | 开心亚洲五月丁香五月 | 无码人妻av一区二区三区波多野 | www日本xxxx|