问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql语句去重

发布网友 发布时间:2022-04-21 16:14

我来回答

8个回答

懂视网 时间:2022-05-01 03:14

--过滤掉重复记录,只保留一条数据
delete from
gzfw_yhxx
where Zjhm in (select Zjhm from gzfw_yhxx group by Zjhm
having count(Zjhm) > 1)
and rowid not in (select min(rowid) from
gzfw_yhxx group by Zjhm having count(Zjhm
)>1)

sql过滤掉重复记录,只保留一条数据

标签:

热心网友 时间:2022-05-01 00:22

sql语句通过DISTINCT关键字去重, 用于返回唯一不同的值。DISTINCT关键字需要搭配SELECT 语句使用,语法为SELECT DISTINCT 列名称 FROM 表名称。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中,否则会出现错误。

扩展资料:

distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

distinct必须放在开头,distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。

热心网友 时间:2022-05-01 01:40

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)这样的写发是通不过的!!!

热心网友 时间:2022-05-01 03:15

有区别,第二条的意思是删除掉emp表中empno不是最小并且empno不为空的数据。第二条having语句中count(1)是指统计第一列的行数(包含空值)。

热心网友 时间:2022-05-01 05:06

删除重复数据嘛?


delete from t t1
where rowid not in (
select max(rowid) from t t2
group by id )


group by 后面填写你判定重复的列名。比如说如果有相同的id 、name、sal就算做重复,那么group by后面加id,name,sal

热心网友 时间:2022-05-01 07:14

加上distinct,不过大型项目不建议使用,该关键字非常影响性能!

热心网友 时间:2022-05-01 09:39

CREATE TABLE temp AS SELECT * FROM (select distinct *from department) as d;
truncate table department;
insert into department select *from temp;
drop table temp;

热心网友 时间:2022-05-01 12:20

用DISTINCT
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 SQL如何去重? sql查询去掉重复记录 sql去重是什么意思? 有什么方法可以让一直不被封? 被封多少次会长期封号? 被封号是什么原因? 在淘宝上买东西经常退,对信用有没有影响? 淘宝频繁退货退款会不会影响自己的信用? 请问一下钉钉里面的头像和名字不一样是什么问题谢谢 钉钉默认头像是自己名字的后两个字,为什么有的默认头像只有一个字? 钉钉如何把图标换成自己的名字 钉钉建群, 群头像为四分头像,为什么有的显示照片,有的显示名字? 钉钉头像自动变成自己的名字怎么回事? 怎样在钉钉上更改自己名字的头像 在淘宝买东西,经常退货退款会影响芝麻信用吗 lol里玩泽拉斯,派克一类的q有时候不能蓄力,我是一直按住q的,但是技能有时候瞬发了? 要什么连点器 有机械键盘的可以看看 为什么我的机械键盘只有wasd esc和方向键亮? 一开始买回来的时候是全亮的 手机用了才不到半年,后面很卡,很缓慢? 机械键盘黑爵ak35i 连点识别成长按 mysql查询去掉重复数据 怎么将字转换成草书 SQL查询,如何去除重复的记录? 草书在线转换 sql怎么删除重复数据 哪里能找到狂草、草书转换器 sql语句查询出的两行数据除了主键其他都一样,怎么去掉重复数据 草书字体转换 sql语句去重distinct方法是什么? SQL查询,按照时间顺序去重数据 草书在线转换可以复制的 SQL数据库查询去除重复的关键字是什么? 草书字体转换器 SQL多个字段如何去重 怎样将文字转换成草书 sql去除重复数据 草书字体怎么在线转换 sql数据库中出现重复行数据,如何删除这些重复记录? 那里有草书转换软件 SQL插入去除重复数据