国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页数据库类SQL Server → SQL重复记录查询 查询多个字段、多表查询、删除重复记录

SQL重复记录查询 查询多个字段、多表查询、删除重复记录

我要评论 2012/02/28 18:41:33 来源:国语自产精品视频在线看 编辑:downcc.com [ ] 评论:0 点击:340次

SQL重复记【chóng fù jì】录【lù】⤵查询(转载👦)
1、查找表🕚中多余【zhōng duō yú】⛲的重复【de chóng fù】👥记录【jì lù】⤵,重复记【chóng fù jì】录【lù】⤵是根据单个字【dān gè zì】段【duàn】📢(peopleId)来判断🐷
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

例二🍦:
select * from testtable
where numeber in (select number from people group by number having count(number) > 1 )
可以查【kě yǐ chá】🌕出【chū】testtable表中🤐number相同的【xiàng tóng de】记录【jì lù】⤵

2、删除表【shān chú biǎo】中🤐多余的重复【de chóng fù】👥记录【jì lù】⤵,重复记【chóng fù jì】录【lù】⤵是根据单个字【dān gè zì】段【duàn】📢(peopleId)来判断🐷,只留有【zhī liú yǒu】rowid最小的【zuì xiǎo de】记录【jì lù】⤵
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、查找表🕚中多余【zhōng duō yú】⛲的重复【de chóng fù】👥记录【jì lù】⤵(多个字🎛段【duàn】)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表【shān chú biǎo】中🤐多余的重复【de chóng fù】👥记录【jì lù】⤵(多个字🎛段【duàn】),只留有【zhī liú yǒu】rowid最小的【zuì xiǎo de】记录【jì lù】⤵
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、查找表🕚中多余【zhōng duō yú】⛲的重复【de chóng fù】👥记录【jì lù】⤵(多个字🎛段【duàn】),不包含➕rowid最小的【zuì xiǎo de】记录【jì lù】⤵
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表中🤐存在一【cún zài yī】个字段【gè zì duàn】📢“name”,
而且不【ér qiě bú】同记录【tóng jì lù】之🍡间📠的【de】“name”值有可🐯能会相【néng huì xiàng】同,
现在就是需要👚查询出【chá xún chū】在该表🌠中的【de】各记录【jì lù】之🍡间📠,“name”值存在🖨重复的【chóng fù de】🛰项🥞;
Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同😮大则如【dà zé rú】下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1


(三⭕)
方法一【fāng fǎ yī】

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段【zhǔ zì duàn】🦂,count(*) from 表名【biǎo míng】 group by 主字段【zhǔ zì duàn】🦂 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 表名【biǎo míng】 where 主字段【zhǔ zì duàn】🦂 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

方法二【fāng fǎ èr】

  有两个🧢意义上🅱的重复【de chóng fù】👥记录【jì lù】⤵,一是完全重复【quán chóng fù】的【de】🛰记录【jì lù】⤵,也即所有字段【yǒu zì duàn】📢均重复【jun1 chóng fù】的【de】🛰记录【jì lù】⤵,二是部分关键【fèn guān jiàn】字段【zì duàn】📢重复的【chóng fù de】🛰记录【jì lù】⤵,比如❇Name字段【zì duàn】📢重复【chóng fù】,而其他字段【zì duàn】📢不一定重【chóng】🆒复或都重复【chóng fù】可以忽略👯。

1、对于第一种重【yī zhǒng chóng】复🖲,比较容【bǐ jiào róng】👼易解决【yì jiě jué】🏦,使用

select distinct * from tableName

就可以【jiù kě yǐ】🍕得到无重复记【chóng fù jì】录【lù】⤵的结果【de jié guǒ】集🍦。

如果该【rú guǒ gāi】🛫表需要💒删除重【shān chú chóng】🧡复的【de】记录【jì lù】⤵(重复记【chóng fù jì】录【lù】⤵保留1条🥡),可以按以下方【yǐ xià fāng】🎃法删除

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

发生这种重复【chóng fù】🖲的原因【de yuán yīn】是表设计不周产生的【chǎn shēng de】,增加唯🀄一索引🚡列即可解决【jiě jué】。

2、这类重复【chóng fù】问题通常要🎏求保留【qiú bǎo liú】重复记【chóng fù jì】录【lù】⤵中的【de】第一条🥡记录【jì lù】⤵,操作方【cāo zuò fāng】法如下

假设有【jiǎ shè yǒu】重复的【chóng fù de】🛰字段【zì duàn】📢为Name,Address,要求得到这两个字段【gè zì duàn】📢唯一的【wéi yī de】😫结果集【jié guǒ jí】🍦

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)

最后一【zuì hòu yī】个select即得到了【le】Name,Address不重复的【chóng fù de】🛰结果集【jié guǒ jí】🍦(但多了【le】👋一个autoID字段【zì duàn】📢,实际写时可以写在select子句中【zǐ jù zhōng】省去此列)

(四)

查询重复【chóng fù】

select * from tablename where id in (

select id from tablename

group by id

having count(id) > 1

)

关键词:SQL重复记录查询

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 欢迎喜欢
  • 0 白痴
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙视