浅谈删除表中的重复数据的几种方式

本文探讨了从数据库表中删除重复数据的多种方法,包括使用DISTINCT重建表、通过约束和异常表、利用ROWID以及分析函数进行去重。每种方法有其适用场景和优缺点,如DISTINCT适合小表但可能导致数据丢失,而利用ROWID和分析函数则提供了更灵活的选择。
摘要由CSDN通过智能技术生成

一个经典的问题:如何从表中找到并去掉重复的数据? 解决这个问题的方式真的有很多,让我们来举出几种吧。



举例:删除id和那么都重复的数据
SQL> select * from b;

        ID NAME
---------- ----------
         1 aa
         2 bb
         3 cc
         4 dd
         1 aa
         2 bb
         3 cc
         4 dd

8 rows selected.


1.用distinct查询来重建表
SQL> create table b_bak as select distinct id,name from b;

Table created.

SQL> rename b to b1;

Table renamed.

SQL> rename b_bak to b;

Table renamed.

SQL> select * from b;

        ID NAME
---------- ----------
         1 aa
         2 bb
         4 dd
         3 cc


这种方式对于大表来说要消耗多余的空间,而且线上系统可能会造成数据的丢失。
使用group by来去重和这种方式类似,逻辑读少些,但是根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值