服务器系统集成及数据服务中心

 

一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
一级栏目
锟斤拷锟斤拷锟斤拷锟斤拷…………………………………………………………………………………………>>>

SQL删除完全重复数据

完全重复数据,可能导致录入等等错误...

    查询无重复结果:
    select distinct * from tableName 
    就可以得到无重复记录的结果集。
  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
    select distinct * into #tmp from kc_wzmx   
    delete     from    kc_wzmx 
    insert     into    kc_wzmx    select     *     from    #tmp 
    kc_wzmx为表名,发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

查询,列出htfphm_、gg_和kbh_三个字段完全重复的数据;

select  * from  kc_wzmx aa
where (select Count(1) from kc_wzmx where aa.htfphm_=htfphm_ and aa.gg_=gg_ and aa.kbh_=kbh_ )>1

SQL Server删除表及删除表中数据的方法
删除表的T-SQL语句为

drop table <表名>
drop是丢弃的意思,drop table表示将一个表彻底删除掉。

删除表数据有两种方法:delete和truncate。
delete的用法如下
delete from <表名> [where条件]
truncate的用法如下
truncate table <表名>
delete和truncate的区别如下
1、delete可以删除表中的一条或多条数据,也可以删除全部数据;而truncate只能将表中的全部数据删除。
2、delete删除表数据后,标识字段不能复用。也就是说如果你把id=10(假如id是标识字段)的那行数据删除了,你也不可能再插入一条数据让id=10.
3、truncate删除表数据后,标识重新恢复初始状态。默认为初始值为1,也就是说,truncate之后,再插入一条数据,id=1.


其它互联网摘抄:

1、写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下:
select * from xi a where (a.username) in  (select username from xi group by username  having count(*) > 1)
2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下:
select  count(username) as ’重复次数’,username from xi group by username  having count(*)>1 order by username desc
3、一下为 查看别人的 结果,现列下:查询及删除重复记录的方法大全

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 integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0

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

  1、对于第一种重复,比较容易解决,使用select distinct * from tableName  就可以得到无重复记录的结果集。  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集select identity(int,1,1) as autoID, * into #Tmp from tableNameselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoIDselect * from #Tmp where autoID in(select autoID from #tmp2)  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)
查询重复select * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)

*******举例*********

查询 Sap Business One制造商OMRC表中重复数据(Pass)
select * from omrc
where firmname in (select  firmname  from  omrc  group  by  firmname  having  count(firmname) > 1)

删除 Sap Business One制造商OMRC表中重复数据(Pass)
delete from omrc
where FirmName  in (select  FirmName  from omrc  group  by  FirmName   having  count(FirmName) > 1)
and FirmCode not in (select min(FirmCode) from  omrc  group by FirmName  having count(FirmName )>1)

OMRC为表名,FirmName/FirmCode为字段名。

***删除或保留一些行数据

数据库int001几个表OMRC/POR1/RDR1,保留前六行数据(操作,出现表错误,处理后/truncate/再导入)
DELETE OMRC WHERE FirmCode NOT IN(SELECT TOP 6 FirmCode FROM OMRC)
DELETE Por1 WHERE DocEntry NOT IN(SELECT TOP 6 DocEntry FROM Por1)
DELETE RDR1 WHERE DocEntry NOT IN(SELECT TOP 6 DocEntry FROM RDR1)

 

*****************************

查询数据库中带有某个字段的所有表名

MySQL数据库查询带有某个字段的所有表名:

(1)精确查询语句如下:

SELECT * FROM information_schema.columns WHERE column_name=’column_name’

(2)模糊匹配查询

SELECT * FROM information_schema.columns WHERE column_name LIKE ’%column_name%’

Oracle数据库查询带有某个字段的所有表名:

(1)精确查询语句如下:

SELECT column_name,table_name FROM user_tab_columns WHERE column_name=’column_name’

(2)模糊匹配查询

SELECT column_name,table_name,FROM user_tab_columns WHERE column_name LIKE ’%column_name%’

SQLServer数据库查询带有某个字段的所有表名:

(1)精确查询语句如下:

SELECT [name] FROM [库名].[dbo].sysobjects WHERE id IN (SELECT id FROM [库名].[dbo].syscolumns WHERE name = ’字段名’)

(2)模糊匹配查询

SELECT [name] FROM [库名].[dbo].sysobjects WHERE id IN (SELECT id FROM [库名].[dbo].syscolumns WHERE name LIKE ’%字段名%’)

 

 

发布时间:2021/8/18 阅读:3197次 来源:
 


 
锟斤拷锟斤拷锟斤拷锟斤拷分类
   
  行业新闻
 
  公司动态
 
  技术资料
 
  电脑维修
 
  恢复案例
 
  SQL数据库
 
  磁盘阵列
 
  服务器
 
  财务软件
 
  网络问题
 
  linux-XFS
 
  苹果电脑&系统
 
  安卓系统相关
 
  办公文件
 
  操作系统
 
  日常生活(烟台)
 
  网站相关
 
   
 
友情链接
 
 
 
 
 
   
公司地址:烟台电脑市场#308
电话:0535-6688830 E-Mail:163@163.com
Copyright©2011-2012 烟台瑞驰科贸有限公司 All Rights Reserved.
鲁ICP备11014811号-1
您是本站第 位访问者