Sql删除重复行
来源:互联网 发布:java异常处理机制叙述 编辑:程序博客网 时间:2024/05/28 14:57
问题描述:
一般数据库中表在设计时都会有主键来约束相同记录,但由于从外部数据源导入或其它原因造成一张表中大量相同记录的问题,可以通过SQL语句实现去除相同记录的操作:
状况一:表中主键是自动编号列ID,但实际数据存在大量重复,如果重复记录是有规律的可以通过ID值运算处理,但如果记录重复频率不一,并且数据量很多的情况下通过企业管理器手工删除是繁琐的,如果使用SQL命令,只需一句即可完成。
数据格式如下表所示:
ID
StuID
StuName
StuSex
StuAddress
StuMail
1
1001
张扬
男
因果巷1号
zy@163.com
2
1001
张扬
男
因果巷1号
zy@163.com
3
1002
张律
男
虎丘路9号
zl@eyou.com.cn
4
1002
张律
男
虎丘路9号
zl@eyou.com.cn
5
1002
张律
男
虎丘路9号
zl@eyou.com.cn
6
1003
沈娴华
女
东环路36号
sxh@163.com
7
1003
沈娴华
女
东环路36号
sxh@163.com
8
1003
沈娴华
女
东环路36号
sxh@163.com
9
1004
杜岗
男
南园南路30号
dgang@oceansoft.com
10
1004
杜岗
男
南园南路30号
dgang@oceansoft.com
11
1005
许增英
女
人民路48-6号
xzy@eyou.com
12
1005
许增英
女
人民路48-6号
xzy@eyou.com
具体SQL命令语句:
DELETE FROM Student WHERE ID NOT IN (SELECT MAX(ID) FROM Student GROUP BY stuID,StuName,StuSex,StuAddress)
这样可以把每行除ID列以外所有相同的数据行中,只保留ID值最大的记录,其余全部删除
当然,也可以保留ID列最小的记录行,只需改为MIN(ID)即可 :
DELETE FROM Student WHERE ID NOT IN (SELECT MIN(ID) FROM Student GROUP BY stuID,StuName,StuSex,StuAddress)
状况二:表中未设主键,造成记录的重复(在SQL2000企业管理器中无法删除,只能通过查询分析器实现)
数据格式如下表所示:
StuID
StuName
StuSex
StuAddress
StuMail
1001
张扬
男
因果巷1号
zy@163.com
1001
张扬
男
因果巷1号
zy@163.com
1002
张律
男
虎丘路9号
zl@eyou.com.cn
1002
张律
男
虎丘路9号
zl@eyou.com.cn
1002
张律
男
虎丘路9号
zl@eyou.com.cn
1003
沈娴华
女
东环路36号
sxh@163.com
1003
沈娴华
女
东环路36号
sxh@163.com
1003
沈娴华
女
东环路36号
sxh@163.com
1004
杜岗
男
南园南路30号
dgang@oceansoft.com
1004
杜岗
男
南园南路30号
dgang@oceansoft.com
1005
许增英
女
人民路48-6号
xzy@eyou.com
1005
许增英
女
人民路48-6号
xzy@eyou.com
这种情况,可以通过生成新表的方式实现:筛选出不同的记录(Distinct)插入新表(NewStudent)
SELECT DISTINCT * INTO NewStudent FROM Student
- 删除SQL重复行
- Sql删除重复行
- Sql删除重复行
- sql删除重复行
- sql 删除重复行
- Sql 删除重复行记录
- SQL如何删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL SERVER删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- SQL查找删除重复行
- 关键词: 变老的宇宙
- Ubuntu下安装sunpinyin碰到的问题及解决办法
- PHP连接MYSQL的类
- 程序员职业生涯中的〇一三五七
- HPROF:Java程序的内存及CPU使用分析工具
- Sql删除重复行
- 程序员35岁前成功的黄金法则
- 中国农业银行网上银行付款遇到的NetSign.cab被阻止的问题
- gSoap的应用
- Ubuntu 9.04 源设置
- 从点击“协同商务”开始
- 火爆 中科院Java系列视频教程 百万浏览量 不断更新中
- 学习 ARM 系列 -- FS2410 开发板上启用 MMU 实现虚拟内存管理
- “道”无处不在—少林寺系列的衍生,神鬼类小说的哲学意义也是可以有的