首页 >

Oracle如何查询相同的数据 – 数据库 – 前端|

为什么苹果平板老是黑屏怎么办,sqlite 3.5怎么用,wps文字字数每行怎么调为什么苹果平板老是黑屏怎么办,sqlite 3.5怎么用,wps文字字数每行怎么调Oracle如何查询相同的数据 - 数据库 - 前端|Oracle如何查询相同的数据

SELECT*

FROMt_infoa

WHERE((SELECTCOUNT(*)

FROMt_info

WHERETitle=a.Title)>1)

ORDERBYTitleDESC

一。查找重复记录

1。查找全部重复记录

Select*From表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)

2。过滤重复记录(只显示一条)

Select*FromHZTWhereIDIn(SelectMax(ID)FromHZTGroupByTitle)

注:此处显示ID最大一条记录

二。删除重复记录

1。删除全部重复记录(慎用)

Delete表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount(*)>1)

2。保留一条(这个应该是大多数人所需要的^_^)

DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)

注:此处保留ID最大一条记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

select*frompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

deletefrompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

androwidnotin(selectmin(rowid)frompeoplegroupbypeopleIdhavingcount(peopleId)>1)

3、查找表中多余的重复记录(多个字段)

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

deletefromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

补充:

有两个以上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

selectdistinct*fromtableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

selectdistinct*into#TmpfromtableName

droptabletableName

select*intotableNamefrom#Tmp

droptable#Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

selectidentity(int,1,1)asautoID,*into#TmpfromtableName

selectmin(autoID)asautoIDinto#Tmp2from#TmpgroupbyName,autoID

select*from#TmpwhereautoIDin(selectautoIDfrom#tmp2)


Oracle如何查询相同的数据 - 数据库 - 前端|
  • mysql有视图吗 |linux mysql 指定配置文件
  • mysql有视图吗 |linux mysql 指定配置文件 | mysql有视图吗 |linux mysql 指定配置文件 ...

    Oracle如何查询相同的数据 - 数据库 - 前端|
  • mysql 多表查询例题,mysql多表查询sql语句怎么写 - 数据库 - 前端,mysql课程表怎么创建
  • mysql 多表查询例题,mysql多表查询sql语句怎么写 - 数据库 - 前端,mysql课程表怎么创建 | mysql 多表查询例题,mysql多表查询sql语句怎么写 - 数据库 - 前端,mysql课程表怎么创建 ...

    Oracle如何查询相同的数据 - 数据库 - 前端|
  • mysql 嵌套循环查询,想学python网络爬虫 - 数据库 - 前端,iis phpinfo没有mysql
  • mysql 嵌套循环查询,想学python网络爬虫 - 数据库 - 前端,iis phpinfo没有mysql | mysql 嵌套循环查询,想学python网络爬虫 - 数据库 - 前端,iis phpinfo没有mysql ...