在平时的开发中,我们经常遇到数据表中出现重复的数据,那么该如何解决呢?这里介绍两种情况下的数据去重方法,一、完全重复数据去重;二、部分字段数据重复去重。
一、完全重复数据去重方法
对于表中完全重复数据去重,可以采用以下SQL语句。
Code
CREATETABLE#tempAS (SELECTDISTINCT * FROM 表名);--创建临时表,并把DISTINCT 去重后的数据插入到临时表中
truncateTABLE 表名;--清空原表数据
INSERTINTO 表名(SELECT * FROM#temp);--将临时表数据插入到原表中
DROPTABLE#temp;--删除临时表
具体思路是,首先创建一个临时表,然后将DISTINCT之后的表数据插入到这个临时表中;然后清空原表数据;再讲临时表中的数据插入到原表中;最后删除临时表。
二、部分数据去重方法
首先查找重复数据
select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1
将上面的>号改为=号就可以查询出没有重复的数据了。
想要删除这些重复的数据,可以使用下面语句进行删除:
deletefrom 表名 a where 字段1,字段2 in
(select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1)
上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库卡死。
基于上述情况,可以先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
CREATETABLE 临时表 AS
(select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1)
下面就可以进行这样的删除操作了:
deletefrom 表名 a where 字段1,字段2 in (select 字段1,字段2 from 临时表);
先建临时表再进行删除的操作要比直接用一条语句进行删除要高效得多。
上面的语句会把所有重复的全都删除,在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新的一条记录,我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。
下面是查询重复数据的一个例子:
select a.rowid,a.* from 表名 a
where a.rowid !=
(
selectmax(b.rowid) from 表名 b
where a.字段1 = b.字段1 and
a.字段2 = b.字段2
)
上面括号中的语句是查询出重复数据中rowid最大的一条记录。而外面就是查询出除了rowid最大之外的其他重复的数据了。
由此,我们要删除重复数据,只保留最新的一条数据,就可以这样写了:
deletefrom 表名 a
where a.rowid !=
(
selectmax(b.rowid) from 表名 b
where a.字段1 = b.字段1 and
a.字段2 = b.字段2
)
同理,上述代码的执行效率毕竟低,所以我们可以考虑建立临时表,将需要判断重复的字段、rowid插入临时表中,然后删除的时候在进行比较。
createtable 临时表 as
select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUPBY a.字段1,a.字段2;
deletefrom 表名 a
where a.rowid !=
(
select b.dataid from 临时表 b
where a.字段1 = b.字段1 and
a.字段2 = b.字段2
);
commit;

猫咪破坏王-变身猫咪模拟器免费下载
开间小店免费下载
汉家江湖免费下载
颜色大作战 - 红蓝大作战 给你点颜色免费下载
真正的飞机飞行员飞行模拟免费下载
美国刑事运输免费下载
时空召唤-巅峰竞技新赛季免费下载
疯狂客运城-经营自己的客运王国免费下载
难倒大侦探免费下载
农场 农业 拖拉机 卡车 收割机 汽车 游戏 洗车游戏免费下载
逃生路线:越狱免费下载
瓶射击3D:枪手专家免费下载
扫雷_经典版本免费下载
暖厨免费下载
65wan诛仙手机游戏下载v2.928.1 安卓版
我的现充计划汉化版下载v1.1.1 安卓中文版
华为恋与练习生官方版下载v2.12.2382 安卓版
松总动员国际版下载v2.6.656 安卓外国版
熊猫博士巴士司机游戏下载v1.0.1 安卓版
空间节奏传奇游戏下载v1.1.2 安卓版
诛仙手游奇趣客户端下载v2.928.1 官方安卓最新版
宝宝从哪来宝宝巴士下载v9.89.99.01 安卓免费版
手机跳棋游戏下载v1.2.0 安卓版
果盘天珠传奇手游下载v1.1.29630 官方安卓版
魔幻单职业游戏下载v1.3.0.1 安卓版
全城封锁末日求生正式版下载v1.0.0 安卓最新版
新网球王子手游繁中版下载v4.0.0 安卓官方版
我要当掌柜最新版下载v3.3.8 安卓版




dts ac3音频解码器(AC3/DTS CODEC)下载v2.0 中文免费版
会声会影9简体中文正式版下载32/64位永久免费版
太D太清梵文天城体字体输入法下载v10.02.03 官方最新版
里诺仓库管理下载v6.96 官方最新版
p硬pqmagic(硬盘分区魔术师)下载V9.0 中文版
时光序官方版下载v3.13.2 最新版