用一条sql语句删除表中所相同记录
如下一、具有主键的情况
a.具有唯一性的字段id(为唯一主键)
delete table
where id not in
(
select max(id) from table group by col1,col2,col3...
)
group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,
那么只要col1字段内容相同即表示记录相同。
b.具有联合主键
假设col1+','+col2+','...col5 为联合主键
select * from table where col1+','+col2+','...col5 in (
select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)
group by 子句后跟的字段就是你用来判断重复的条件,
如只有col1,那么只要col1字段内容相同即表示记录相同。
c:判断所有的字段
select * into #aa from table group by id1,id2,....
delete table
insert into table
select * from #aa
二、没有主键的情况
a:用临时表实现
select identity(int,1,1) as id,* into #temp from ta
delect #temp
where id not in
(
select max(id) from # group by col1,col2,col3...
)
delete table ta
inset into ta(...)
select ..... from #temp
b:用改变表结构(加一个唯一字段)来实现
alter table 表 add newfield int identity(1,1)
delete 表
where newfield not in
(
select min(newfield) from 表 group by 除newfield外的所有字段
)
alter table 表 drop column newfield
在数据库里表的rowid是唯一的所以相同的记录rowid是不同的可以分两步做因为
一:查重复记录
select rowid,bm,mc from 表名1 where 表1.rowid!=(select max(rowid) from
表1 b(别名) where 表1.bm=b.bm and 表.mc=b.mc);
二:删除重复记录
delete from 表1 where 表1.rowid!=(select max(rowid) from 表1.b where 表1.bm=b.bm and 表1.mc=b.mc);
这段SQL的功能是查找重复的记录,然后保留rowid号最大的那条记录 将其余的相同记录删除。

转载于:https://www.cnblogs.com/lin614/archive/2007/08/09/849236.html

用一条sql语句删除表中所相同记录相关推荐

  1. java中删除每一条数据,一条sql语句删除表中所有除ID 不同之外的记录,只留一条。...

    表: CREATE TABLE Company_Info ( id  smallint IDENTITY(1,1) , username varchar(50) null, password varc ...

  2. 如何删除表中的重复记录?等等常用SQL语句的积累

    1.如何删除表中的重复记录?(这里指记录的每个字段都要相同) select distinct * into #temp from tab delete tab insert tab select * ...

  3. 一条SQL语句查询数据库中的所有表、存储过程、触发器

    一条SQL语句查询数据库中的所有表.存储过程.触发器 (sysobjects表信息)   该条语句查询返回所有的用户表 select * from sysobjects where xtype='u' ...

  4. 【SQL】 使用SQL语句在表中添加数据(一条 / 多条)

    [SQL] 使用SQL语句在表中添加数据(一条 / 多条) 1.单条数据 insert into 表名(字段名1,字段名2)value(值1,值2); 例如: insert into tablenam ...

  5. 用MS SQL 语句修改表中字段类型

    [问题]用SQL 语句判断表中是否存在password字段,不存在则新增字段,若存在password字段,把字段的类型由int 类型改为text类型. [实现方法] if exists( select ...

  6. MySQL 删除表中的数据记录

    文章目录 前言 一.删除表中的数据记录? 1.删除特定数据记录 2.删除所有数据记录 总结 前言 删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录.在MySQL中可以通过DELETE ...

  7. SQL删除表中的重复记录只保留其中一条,最简单的方法:ROW_NUMBER()

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?. 要求:删除表中多余的重复记录,且保留 id 最小的那一条记录. CREATE TABLE #temp_data( id BI ...

  8. SQL Server 使用DELETE 语句删除表中的记录两种情况(删除符合条件的记录,删除所有记录)

    1 使用详解 DELETE 语句 说明:用于删除表中的记录. 语法: DELETE FROM table_name [WHERE some_column operator some_value]; 2 ...

  9. 一条SQL语句在MySQL中是如何执行的

    来源:http://t.cn/E6U9Z9T 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架 ...

最新文章

  1. Iterator迭代器原理
  2. vim环境配置 +vimplus配置
  3. 阿里云业绩同比增126% 云服务现“3A鼎立”
  4. UNIX/Linux系统管理技术手册(1)----脚本和shell
  5. 读取其他软件页面数据_电脑软件分享之硬盘数据完美恢复
  6. Chapter 1: 使用引用类型
  7. 计算机abc分类法,ABC分类法.ppt
  8. JAVASEday02
  9. 永恒python配合什么主武器_「和平精英武器组合」游戏的主副武器应该怎么搭配?这三种配合让你战斗力提升...
  10. 集成Ueditor秀米
  11. FPGA信号处理系列文章——定点数据截位处理
  12. 1.2_CentOS 7 终端系统识别挂载 USB 的 NTFS 分区
  13. 考(重点理解哪些属于其他货币资金)、其他货币资金的内容、其他货币资金的账务处理(银行汇票存款、银行本票存款、信用卡存款、信用证保证金存款、存出投资款、外埠存款)
  14. python学习No7
  15. 计算机综合训练50题4,-计算机基础练习题-Excel部分50题.doc
  16. Cisco Packet Tracer学习
  17. 新建网站如何跟服务器连接,flashfxp怎么用(新建添加网站[站点]连接)
  18. 基于Springboot的大学生社团管理系统
  19. SpringAOP中@within和@annotation的区别
  20. 打豆豆游戏c语言编程,C语言程序打豆豆(函数版)分享!

热门文章

  1. python代码案例详解-我用Python抓取了7000 多本电子书案例详解
  2. python如何绘制折线图-python如何画折线图
  3. 如何用python创建一个下载网站-用Python写一个简单的网页下载
  4. python画图武汉加油-python实现“武汉加油”点阵字
  5. python编程实例视屏-python 下载抖音视频示例源码
  6. python3版本之间的区别-python3.6与3.4版本的区别是什么?
  7. python多线程爬虫实例-Python多线程爬虫简单示例
  8. python语音在线编辑-Python:语音处理,实现在线朗读RFC文档或本地文本文件
  9. python语言怎么输入-python/基础输出输入用法
  10. 小学生python-现在连小学生都会Python了吗?