SQL去除重复数据,无主键

一个没留神,数据库表table1被同事改的代码插入了重复数据,是很规律的每一条数据重复出现两次,查重SQL如下:

SELECT column1, count(*) num FROM table1 GROUP BY column1 HAVING num > 1

本来打算参照其他去重的办法直接套用SQL语句:

DELETE FROM table1
    WHERE id NOT IN 
    ( 
    SELECT 
        a.id 
    FROM ( 
        SELECT MAX( id ) AS id FROM table1 GROUP BY column1 
        )a 
    )

奈何写了两句才发现,这个表,它没主键!!想了一下,没有主键且所有字段都没有要求唯一的情况下,没有任何办法可以区分两条重复数据,老老实实用中间表吧,复制当前表结构,建立table1_copy,然后把所有非重复数据拷过去:

INSERT INTO table1_copy (
	SELECT DISTINCT
		column1,
		column2,
		...,
		columnX 
	FROM
	    table1
	)

鉴于我遇到的数据情况很简单,DISTINCT column1就可以完美匹配当前需求,数据拷过去之后给当前table1重命名改为备份表,table1_copy重命名为table1即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值