sql数据库一些查找删除方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查找数据库中重复数据T-SQL

========第一篇=========

在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:

select data_guid from adam_entity_datas a where a.rowid > (select min (b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid) 如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高效率select data_guid from adam_entity_datas where data_guid in (select da ta_guid from adam_entity_datas group by data_guid having count(*) > 1)

此方法查询出所有重复记录了,也就是说,只要是重复的就选出来,下面的语句也许更高效

select data_guid from adam_entity_datas where rowid in (select rid fr om (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m <> 1)

目前只知道这三种比较有效的方法。

第一种方法比较好理解,但是最慢,第二种方法最快,但是选出来的记录是所有重复的记录,而不是一个重复记录的列表,第三种方法,我认为最好。

========第二篇=========

select usercode,count(*) from ptype group by usercode h aving count(*) >1

========第三篇=========

找出重复记录的ID:

select ID from

( select ID ,count(*) as Cnt

from 要消除重复的表

group by ID

) T1

where t>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

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

如果该表需要删除重复的记录,可以按以下方法删除

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不重复的结果集

更改数据库中表的所属用户的两个方法

大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……

========第四篇=========

如何查询数据库中的重复记录?

比如说有个表中的数据是这样:

---------

a

a

a

b

b

c

---------

查询出的结果是:

记录数量

a 3

b 2

c 1

怎样写这个SQL语句?

-----------------------

select distinct(name),count(*) from tabname group by name;

-------------------------------------

想出来了,这样就可以排序了。

select a1,count(a1) as total from tablename group by a1 order by to tal desc

--------------------------------------

select distinct(a1),count(a1) as total from tablename group by a1 ord er by total desc

加个distinct更有效率

-------------------------------------------------------------- select p.*, m.* from table1 p left join table2 m on p.item1=m.item2 w here p.item3='#$#@%$@' order by p.item3 asc limit 10

就类似这么写

========第五篇=========

如何查找数据库中的重复记录? 能在Access中用的方法

----------------------------------------------------------------------

select *

相关文档
最新文档